Hibernate(およびSpring)を使用してデータベースなどからデータを取得するMavenで構築しているプロジェクトがあります.
私のプロジェクトのDAOの「テスト」はSpringのAbstractTransactionalDataSourceSpringContextTests
ものを拡張して、テスト中のクラスにDataSourceを接続して、クエリ/ Hibernateロジックを実際に実行したり、データをフェッチしたりできるようにします。
他のいくつかのプロジェクトでは、これらのタイプのテストを HSQL データベース (メモリ内またはファイルを指す) と組み合わせて使用し、外部データベースに依存することなく実際のデータベース クエリ ロジックを効率的にテストできるようにしました。これは、外部の依存関係を回避し、テストを実行する前のデータベースの「状態」(それぞれがロールバックされるトランザクションにラップされている)が明確に定義されているため、うまく機能します。
私はこれらのテスト (統合テストのルーズなフレーバー) を Maven で編成する最良の方法について興味があります。これらのテストを に保持するのは少し汚い気がしますsrc/test/java
が、私が読んだ限りでは、Maven との統合テストを編成するための一貫した戦略や実践はないようです。
私がこれまでに読んだことから、Failsafe プラグイン(または Surefire の 2 番目のインスタンス) を使用してそれをintegration-test
フェーズにバインドし、カスタムの起動またはシャットダウン ロジック (起動など) をバインドすることもできるようです。 /HSQL インスタンスの停止)pre-integration-test
またはに移動しpost-integration-test
ます。しかし、これは本当に最善の方法でしょうか?
だから私の質問は基本的に - これを Maven で整理する上で一般的に受け入れられているベストプラクティスは何ですか? ドキュメントで一貫した答えを見つけるのに苦労しています。
私がしたいのは:
- 単体テストを統合テストから分離して、
test
フェーズ中に単体テストのみが実行されるようにする pre-integration-test
カスタムの起動/シャットダウン ロジックをおよびにバインドする機能post-integration-test
- 統合テストからのレポートを単体テストの Surefire レポートとマージ/提示する