テストを書きたい Spring/JPA Web アプリケーションがあります。理想的には、次のことができるようになりたいです。
- テストを実行する前に、テスト DB スキーマを (JPA アノテーション付きクラスから) 1 回作成します。
- テストが完了するとロールバックされる独自のトランザクションで各テストメソッドを実行します
- クラスごとまたはメソッドごとのレベルで、各テストにロードする (DbUnit) データセットを指定します。テスト データは、トランザクションの開始後にロードする必要があります。これにより、テストの完了時にテスト データもロールバックされます。
- Spring Bean をテストクラスに注入する
Spring は、私が求めているトランザクション動作を提供できるクラスを提供することを認識しています。理想的には、最終的なソリューションは次のようになります
// This dataset will be used for all tests that don't override it with their own annotation
@TestData('/dbunit/dataSetDefault.xml')
public class MyTests extends ProbablySomethingFromTheSpringFramework {
@Test
void testWithDefaultDataSet() {
// Transaction is implicitly started here
// My test code goes here
// A transaction is implicitly rolled-back here
}
@TestData('/dbunit/dataSetCustom.xml')
@Test
void testWithCustomDataSet() {
// Same as the other test
}
}
明らかに親クラスと@TestData
は架空のものですが、私が探している機能を提供するものはありますか?
これにより、テスト DB スキーマをどのように作成するかという問題が残ります。理想的には、これはすべてのテストが (Maven によって) 実行される前に 1 回発生します。誰かがこれを達成する方法を提案できますか? JPAアノテーションをDDLに変換するために何かを使用し、次にそれをテストデータベーススキーマにロードするために何かを使用する必要があると思います。
ありがとう!