私はデータベースの移行を処理するために Flyway を使用しています。すべてが正常に機能しています。移行ファイルのデフォルトの場所は次のとおりです。
_main/resource/db/migration/V1...
_
私は統合テストを実行しており、セットアップでは統合用に別のデータベーススキーマを使用しています。これもflywayで管理したいと思います。ただし、統合テストはtest
フォルダーにあります(main
ではありません)。 FlywayBeanがmigrate()
を実行すると、移行ファイルはmain
フォルダーにあるため、それらは見つかりません。移行ファイルを_test/resource/db/migration/V1...
_に入れると、機能します。
これらのファイルをtest
リソースフォルダーにコピーする必要は本当にないので、両方を維持する必要はありません。 Flywayに通常のアプリと同じ移行ファイルを統合テストに使用させる方法はありますか?
Mavenを使用していると思いますか?単体テストの場合、test/resources
とmain/resources
の両方がクラスパスにロードされます。 test/resources
ファイルは通常、クラスパスの上位に配置されるため、優先されます-正しく思い出せば。とにかく、これを行うことはお勧めしません。
代わりに、統合テスト用にまったく異なるFlyway構成を作成することをお勧めします。これは、別のディレクトリ(つまり、test/resources/integration/migration/
)にあり、デフォルトのmain/resources/db/migration
の後に実行されます。
それでも、Flywayを使用して統合データフィクスチャをセットアップせず、代わりに DbUnit (他にもあると確信しています)などの他のデータベースデータロードツールを使用する方が簡単な場合があります。
別のヒント:データベースユニットテストについては、Flyway Test Extensionを使用することもできます https://github.com/flyway/flyway-test-extensions を参照してください。
拡張機能には、データをロードするためのDbUnit統合用のアドオンも含まれているため、テスト環境でのデータベース設定を制御できます。
Adamsの答えは正しいですdonot実際のデータベースセットアップスクリプトをtest/resources/db/migration/
にコピーします。
統合テストのセットアップでは、次のオプションの1つまたは組み合わせを実行することもできます。
flyway-maven-plugin
を追加する特別なtest/resources/integration/migration/
またはgradleセットアップを追加します。test/resources/db/migration/
をテストで使用し、V999.0.x __やsimularなどの特別なバージョンを使用します。この場合、flywayは常にデータベース内で検出されたすべてのスクリプトを埋めます。データベース統合テストのヒント: