1. ホーム
  2. maven

[解決済み] Mavenで単体テストを禁止し、統合テストを許可する

2022-04-21 04:14:18

質問

私はいくつかのユニットテストを実行するためにSureFireプラグインを使用し、いくつかの統合テストを実行するためにFailSafeプラグインを使用しているMavenビルドを持っています。 私はFailSafeプラグインのテストだけを実行する方法が欲しいです。

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

があります。 skip.testsmaven.test.skipskipTests を停止する すべて のテストと skipITs で、フェイルセーフプラグインのみを停止させます。

そこで、Mavenのコマンドラインフラグとして、以下のようなものはないでしょうか? skipITs しかし、その代わりに "onlyITs" の機能を備えているのでしょうか?

解決方法は?

確実なテストだけをスキップする最も簡単な方法は、確実なテスト( であり、フェイルセーフではない ) を以下のように設定します。

<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 を実行し、フェイルセーフではなく確実なテストのみをスキップします。また、プレインテグレーションとポストインテグレーションを含む他のすべての必要なフェーズを実行し、さらに、このフェーズでは verify を実現するために必要なゴールです。 mavenのビルドを失敗させる 統合テストが失敗した場合

これは、テストをスキップするように指定するためのプロパティを再定義するものであることに注意しましょう。 -DskipTests=true これは、特に既存のビルドやユーザーが既にそのフラグを指定している場合、予期しない事態になる可能性があります。簡単な回避策は、デフォルトで skip.surefire.tests の値に skipTests を追加してください。 <properties> セクションを作成します。

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

必要であれば、類似のパラメータである skip.failsafe.tests というのも、ユニットテストは通常より前の段階で実行されるからです。そして、ユニットテストは実行したいが統合テストは実行したくない場合は test フェーズではなく verify というフェーズがあります。あなたの経験は異なるかもしれません

これらの skip.(surefire|failsafe).tests プロパティは、おそらくsurefire/failsafeのコード自体に統合されるべきですが、それが「1つの小さな違いを除けば全く同じプラグインである」という倫理観にどれだけ違反するかはわかりません。