179

SureFire プラグインを使用していくつかの単体テストを実行し、FailSafe プラグインを使用していくつかの統合テストを実行する Maven ビルドがあります。FailSafe プラグインのテストだけを実行する方法が必要です。

これはマルチモジュール ビルドであり、すべてのモジュールの pom を編集する必要がないため、pom にさまざまなプロファイルや何かを追加するのは良い解決策ではありません。

すべてのテストを停止するskip.testsおよびmaven.test.skipと、フェールセーフ プラグインのみを停止する があります。skipTestsskipITs

それで、MavenのようなコマンドラインフラグはありskipITsますが、代わりに「onlyITs」の機能がありますか?

4

7 に答える 7

191

Surefire テストのみをスキップする最も簡単な方法は、次のように Surefire (ただしfailsafe ではない)を構成することです。

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.14</version>
    <configuration>
        <!-- skips surefire tests without skipping failsafe tests.
                 Property value seems to magically default to false -->
        <skipTests>${skip.surefire.tests}</skipTests>
    </configuration>
</plugin>

これにより、実行が可能になりmvn verify -Dskip.surefire.tests、フェイルセーフではなく確実なテストのみがスキップされます。また、統合前および統合後を含む他のすべての必要なフェーズを実行し、統合テストが失敗した場合に Maven ビルドverifyを実際に失敗させるために必要な目標も実行します。

これは、テストをスキップすることを指定するために使用されるプロパティを再定義することに注意してください。そのため、 canonical を指定すると-DskipTests=true、surefire はそれを無視しますが、failsafe はそれを尊重します。これは、特に既存のビルド/ユーザーがそのフラグを指定している場合は特に、予期しない場合があります。簡単な回避策は、pom のセクションの値skip.surefire.testsをデフォルトに設定することです。skipTests<properties>

<properties>
    <skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>

必要に応じて、フェイルセーフと呼ばれる類似のパラメーターを指定できますが、必要であるとskip.failsafe.testsは思いませんでした。単体テストは通常​​、初期段階で実行されるため、単体テストを実行したいが統合テストは実行したくない場合は、実行しますフェーズではtestなくverifyフェーズ。あなたの経験は異なるかもしれません!

これらのskip.(surefire|failsafe).testsプロパティはおそらく確実な/フェイルセーフ コード自体に統合されるべきですが、「わずかな違いを除いてまったく同じプラグインである」という精神にどの程度違反するかはわかりません。

于 2013-07-29T19:41:14.870 に答える
129

回避策は、次のように呼び出すことです。

mvn clean test-compile failsafe:integration-test

確かに、これは醜いですが、問題を解決するかもしれません。


または(別のハック):

mvn clean integration-test -Dtest=SomePatternThatDoesntMatchAnything -DfailIfNoTests=false

参照:

于 2011-07-07T14:47:34.967 に答える
27

お役に立てれば!

FailSafe (統合テスト用プラグイン) を使用してテストのみを実行してみてください。デフォルトでは、次のような名前の統合テストのみを実行できます: * /IT .java, **/ IT.java, * /*ITCase.java ; 、ただし、pom ファイルから簡単に変更できます)

mvn failsafe:integration-test

そして、SureFire(単体テスト用プラグイン)だけを使いたい場合

mvn surefire:test

または一度に 1 つのテスト:

mvn -Dtest=MyUnitlTest
于 2013-12-01T15:32:16.453 に答える
-2

別のプロファイルで統合テストまたは単体テストを実行してみてください。次に、プロファイルを有効/無効にすることができます。

于 2011-07-08T00:00:11.037 に答える