maven-surefire-plugin(test)のように、最初のmaven-fails-pluginはデフォルトで別のライフサイクルフェーズ(統合テスト)で実行されます。さらに、統合テストが失敗したかどうか確認する場合は、post-integration-test
テストフェーズでverify
ゴールを実行するようにmaven-failsafe-pluginを設定することができます。これは自由に設定することができます。
私の心には1つの質問があります。 10個のモジュールがあり、今では統合テストをしたいと思っていますか?彼らはどのモジュールに属していますか?だから、彼らが10個のモジュールのどれにも属していないので、別のモジュールを持つのが最善です。
maven-surefire-pluginとは別に、既定のライフサイクルで既に設定されています。はい、補足的な目標が考えられますが、異なるプラグインを使用するのは混乱します。ここでは懸念の分離が重要です。別に全体のデフォルト設定から...これらのプラグインは、より大きなコードベースを共有するが、違いがある...
も何すでにTunakiで述べてきたことは、サーバなどintegration-test
やシャットダウンのようなもののようなセットアップもののために、pre-integration-test
ですダウンサービス/サーバーpost-integration-test
段階です。これはユニットテストでは決して起こりません。
別のモジュールを使用すると、ユニットテストとは異なる依存関係(クラスパス)を持つことを意味するITをセットアップするのが簡単になります。たとえば、Arquillian.orgのような単体テストでは決して使用しないものがあります。これは単一のモジュールで処理することはできません...ここでも懸念の分離です。
さらに、統合テストはデフォルトでは並列化できませんでしたが、単体テストは定義によって定義することはできません。
フォルダのレイアウトはどうですか?統合テストモジュールでは、単純にsrc/test/java
フォルダを使用することができます。これは、補足的な設定(たとえば、build-helper-maven-pluginなど)を必要としないため、設定パラダイムよりも慣習に従いやすくなります。
そしてない方が良いビルド(CI)で実行されているものを制御することができます忘れて...
そして、もう一つの重要なヒント。通常、インテグレーションテストはインフラストラクチャに関連していることが多いので、そこでは失敗を無視することが有用な場合があります。check
のメイブフェイルセーフプラグインの目標を使用して処理できます。
ITモジュールの例はhereです。
あなたが言ったことはそれがきれいではないということは、あなたが好きではないかもしれないあなたの単体テストとしてそれらがクラスパスを得る正しい原因です。したがって、ITを含むモジュールを完全に分離することが最善です。すでに述べたように 'src/test/java'を使ってそれらを探し、ITの命名規則に従います。 – khmarbaise
@khmarbaise:説明のおかげで、Apache Mavenプロジェクトのコミッタの一人からまっすぐに来てくれてありがとう!私はあなたが言っていることを理解していますが、別のディレクトリにあれば、あなたの ' test'の依存関係は異なるでしょう。彼らはそうではありません。私も理解していないことは、(この件でかなり読んでいるにもかかわらず)、なぜこの場合に別のプラグインが必要なのかです。統合テスト段階で呼び出される 'maven-surefire-plugin'のもう一つの目標は、単純にあったでしょうか? – carlspring