私が読んだ Mavenフェイルセーフプラグイン は統合テストを実行するために特別に設計されています。現在、私はマルチモジュールプロジェクトに取り組んでおり、統合テストは独自の個別のモジュールにあり、TestNgで記述され、 Surefireプラグイン を使用して実行されます。そのモジュールのテストフェーズでは統合テストのみが実行されるため、単体テストとの競合はありません。また、テストの前に環境をセットアップし、テストの実行後に環境をクリーンアップするには、@BeforeSuite @AfterSuite
TestNgアノテーションが使用されます。したがって、Failsafeプラグインで使用されるpre-integration-test
フェーズ、integration-test
フェーズ、post-integration-test
フェーズを使用する必要はありません。
pre-integration-test
、post-integration-test
フェーズでサーバーの起動、シャットダウン、ファイルの解凍などを行うことはできますか?スイートに独自のテストセットアップ/ティアダウンがすでにある場合は、その外観から、FailSafeプラグインから得られるものはあまりありません。
FailSafeプラグインは、サーブレットや分散システムの起動など、テスト対象システムのセットアップにコストがかかる場合や時間がかかる場合に役立ちます。このような状況でFailSafeプラグインが便利な方法は、この環境をpre-integration-test
フェーズでセットアップできることです。このプラグインは、テストが失敗してもMavenビルドの実行を停止しません。これにより、post-integration-test
フェーズ中にすべてのアーティファクトをクリーンアップでき、その後、テストのステータスをチェックして、合格または不合格になります。それに応じて、verify
フェーズでビルドします。
フェイルセーフには、Surefireと比較して1つの大きな機能があります。テストが失敗しても、すぐには中止されません。代わりに、クリーンアップコードを実行できます(通常、Jettyサーバーがダウンします)。
3番目の質問は実際には答えられていないので、私見に答えます。
Mavenプラグインを作成せずに、統合テスト前、統合テスト後のフェーズでサーバーの起動、シャットダウン、ファイルの解凍などを行うことはできますか?
この回答 から " Mavenフェイルセーフプラグイン:統合テストの前後のフェーズの使用方法 "から取得
つまり、pre-integration-test
とpost-integration-test
はデフォルトでは何もしません。タスクに固有のプラグインをこれらのフェーズにバインドできます。特定のプラグインを見つけることは、何をしようとしているかによって異なります。
指摘すべきもう1つの重要な点は、maven-failsafe-plugin
で使用されるデフォルトの命名規則です。これは、名前がIT
で始まるまたは終わるテストクラスを実行します(統合テストクラスとして)。