2012-04-08 32 views
5

jsonレスポンスを返すコントローラをテストしていますが、h2データベースが の自動インクリメントIDをリセットしないため、初めて テストが失敗します。 フィクスチャを使用するか手動でオブジェクトを作成するのと同じ問題があります。h2の自動インクリメントのリセット

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

この問題を解決するにはどうすればよいですか? (ローカルでの再生アプリを実行する場合)

答えて

12
はこのURLでブラウザを起動し、自分のプレーのアプリを起動し

http://localhost:9000/@db 

は、あなたのH2 DBを入力し、以下のコマンドを入力して実行します。

ALTER TABLE <table_name> ALTER COLUMN <column_name> RESTART WITH 1 
あなたがプログラムでこれを実行したい場合は

Fixtures.executeSQL()は、より多くの情報については

便利かもしれませんチェックhttp://www.h2database.com/html/grammar.html#alter_table_alter

1

あなたが春を使用している場合、私は、各テストは、それによってデシベル増分をリセットし、新しいアプリケーション・コンテキストを使用するように@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

を使用して示唆している。このblog postを見つけました。

関連する問題