web-dev-qa-db-ja.com

Mavenフェイルセーフプラグインの利点

私が読んだ Mavenフェイルセーフプラグイン は統合テストを実行するために特別に設計されています。現在、私はマルチモジュールプロジェクトに取り組んでおり、統合テストは独自の個別のモジュールにあり、TestNgで記述され、 Surefireプラグイン を使用して実行されます。そのモジュールのテストフェーズでは統合テストのみが実行されるため、単体テストとの競合はありません。また、テストの前に環境をセットアップし、テストの実行後に環境をクリーンアップするには、@BeforeSuite @AfterSuiteTestNgアノテーションが使用されます。したがって、Failsafeプラグインで使用されるpre-integration-testフェーズ、integration-testフェーズ、post-integration-testフェーズを使用する必要はありません。

  • フェイルセーフプラグインを使用しないことで、私が見逃している他の利点はありますか?
  • フェイルセーフプラグインを使用して現在の要件を実行するためのより良い方法はありますか?
  • Mavenプラグインを作成せずに、pre-integration-testpost-integration-testフェーズでサーバーの起動、シャットダウン、ファイルの解凍などを行うことはできますか?
30
keheliya

スイートに独自のテストセットアップ/ティアダウンがすでにある場合は、その外観から、FailSafeプラグインから得られるものはあまりありません。

FailSafeプラグインは、サーブレットや分散システムの起動など、テスト対象システムのセットアップにコストがかかる場合や時間がかかる場合に役立ちます。このような状況でFailSafeプラグインが便利な方法は、この環境をpre-integration-testフェーズでセットアップできることです。このプラグインは、テストが失敗してもMavenビルドの実行を停止しません。これにより、post-integration-testフェーズ中にすべてのアーティファクトをクリーンアップでき、その後、テストのステータスをチェックして、合格または不合格になります。それに応じて、verifyフェーズでビルドします。

26
Cem Catikkas

フェイルセーフには、Surefireと比較して1つの大きな機能があります。テストが失敗しても、すぐには中止されません。代わりに、クリーンアップコードを実行できます(通常、Jettyサーバーがダウンします)。

29

3番目の質問は実際には答えられていないので、私見に答えます。

Mavenプラグインを作成せずに、統合テスト前、統合テスト後のフェーズでサーバーの起動、シャットダウン、ファイルの解凍などを行うことはできますか?

この回答 から " Mavenフェイルセーフプラグイン:統合テストの前後のフェーズの使用方法 "から取得

つまり、pre-integration-testpost-integration-testはデフォルトでは何もしません。タスクに固有のプラグインをこれらのフェーズにバインドできます。特定のプラグインを見つけることは、何をしようとしているかによって異なります。

指摘すべきもう1つの重要な点は、maven-failsafe-pluginで使用されるデフォルトの命名規則です。これは、名前がITで始まるまたは終わるテストクラスを実行します(統合テストクラスとして)。

2
huch