2012-04-08 63 views
5

我正在測試一個控制器,該控制器返回一個json響應,但測試 第一次失敗,因爲h2數據庫沒有重置 自動增量ID。 手動使用燈具或創建對象具有相同的問題。重置h2中的自動增量

@Before 
public void setUp() { 
    Fixtures.deleteAllModels(); 
    Fixtures.loadModels("data.yaml"); 
} 

如何解決這個問題?

回答

12

啓動Google Play應用程式,以這樣的URL火起來的瀏覽器(如果您運行在本地播放應用程序):

http://localhost:9000/@db 

輸入您的H2數據庫,然後鍵入以下命令,然後運行:

ALTER TABLE <table_name> ALTER COLUMN <column_name> RESTART WITH 1 

如果您想以編程方式做到這一點,Fixtures.executeSQL()可能是有用的

欲瞭解更多信息,請http://www.h2database.com/html/grammar.html#alter_table_alter

1

如果使用的是春天,我發現這個blog post這表明使用@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

使每個測試使用新的應用程序環境,從而復位分貝增量。