34

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

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

3 に答える 3

33

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

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

于 2012-02-19T22:45:36.997 に答える
31

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

于 2012-02-19T22:50:16.957 に答える
2

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

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

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

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

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

于 2018-12-17T08:45:52.553 に答える