一部が失敗した場合でも、Mavenにすべてのテストを実行させる


243

複数のモジュールを含むプロジェクトがあります。すべてのテストに合格すると、Mavenテストがすべてを実行します。

最初のモジュールでテストが失敗すると、mavenは次のプロジェクトに進みません。Surefireの設定でtestFailureIgnoreをtrueに設定していますが、役に立ちません。

Mavenですべてのテストを実行するにはどうすればよいですか?


maven-surefire-pluginのバージョンは何ですか?
Pascal Thivent、2010年

回答:


359

Mavenのエンベッダのドキュメント

-fae--fail-at-end その後のビルドのみ失敗します。影響を受けないすべてのビルドを続行できるようにする

-fn--fail-never プロジェクトの結果に関係なく、ビルドに失敗しないでください

したがって、1つのモジュールをテストする場合は、を使用しても安全-faeです。

それ以外の場合で、複数のモジュールがあり、それらすべてをテストする場合(失敗したテストモジュールに依存するものも含む)、を実行する必要がありますmvn clean install -fn
-fae失敗したテストがあるモジュールを続行します(他のすべてのテストを実行します)が、それに依存するすべてのモジュールはスキップされます。


1
さらに、コマンドに-eを追加して、エラー情報を提供することもできます。
2012

11
私はオプションをテストしました--fail-never。コンパイルエラーが発生しても、Mavenはビルドに失敗しません。Jenkinsでこのオプションを使用すると、コンパイルエラーが多数発生しても、ビルドは成功したように見えます。私-Dmaven.test.failure.ignore=trueはこの場合を好み、Jenkinsに確実なレポートを分析させます。
fuemf5

@wlnirvanaこのリンクを使用して投稿を編集しました(コメントを削除してください...)
Steve Chambers

93

Mavenがすべてのテストを実行し、失敗しても停止しない「-fae」パラメーターを見つけました。


3
残念ながら、このパラメーターはTeamCityに渡しても機能しません。
ripper234 2010年

4
マルチモジュールプロジェクトでは、テストに失敗したモジュールに依存するモジュールはスキップされます。代わりに-fnを使用してください。
ヒポキト2018年

2
@ ripper234 TeamCityで動作させる方法を見つけましたか?
Jeredriq Demas

86

surefire 2.6でテストし、surefireをで構成できますかtestFailureIgnore=true。またはコマンドラインで:

mvn install -Dmaven.test.failure.ignore=true

16
IIRCには、すべてのテストを実行して最終的に失敗するのではなく、ビルド全体が失敗しないという効果があります。
OndraŽižka11年

1
これは私のために働いていた唯一のオプションです...「-fae」オプションは、テストの失敗には何もなかった

38

ルートプロジェクトの pom.xmlにsurefireプラグインの次の設定を追加してみてください。

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

17

簡単な答え:

mvn -fn test

ネストされたプロジェクトビルドで動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.