web-dev-qa-db-ja.com

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

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

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

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

220
ripper234

「-fae」パラメーターが見つかりました。これにより、Mavenはすべてのテストを実行し、失敗時に停止しません。

89
ripper234

ドキュメントから:

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

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

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

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

311
despot

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

mvn install -Dmaven.test.failure.ignore=true
73
Pascal Thivent

ルートプロジェクトの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>
29
nybon

簡単な答え:

mvn -fn test

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

13
rustyx