我有一个项目与几个模块。当所有测试都通过时,Maven测试将运行它们。

当第一个模块中的测试失败时,maven将不会继续到下一个项目。我有testFailureIgnore设置为true在Surefire设置,但它没有帮助。

如何使maven运行所有测试而不考虑以前的失败?


当前回答

来自Maven Embedder文档:

-fae,——fail-at-end允许所有不受影响的构建继续 -fn,——fail- NEVER无论项目结果如何,绝不让构建失败

因此,如果您正在测试一个模块,那么使用-fae是安全的。

否则,如果您有多个模块,并且希望对所有模块进行测试(甚至是那些依赖于失败的测试模块的模块),则应该运行mvn clean install -fn。 -fae将继续处理测试失败的模块(将运行所有其他测试),但将跳过依赖它的所有模块。

其他回答

来自Maven Embedder文档:

-fae,——fail-at-end允许所有不受影响的构建继续 -fn,——fail- NEVER无论项目结果如何,绝不让构建失败

因此,如果您正在测试一个模块,那么使用-fae是安全的。

否则,如果您有多个模块,并且希望对所有模块进行测试(甚至是那些依赖于失败的测试模块的模块),则应该运行mvn clean install -fn。 -fae将继续处理测试失败的模块(将运行所有其他测试),但将跳过依赖它的所有模块。

尝试在根项目的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>

使用<testFailureIgnore>true</testFailureIgnore>配置Surefire。

或者在命令行中:

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

我刚刚找到了-fae参数,它导致Maven运行所有测试,而不是在失败时停止。

一个简单的回答:

mvn -fn test

使用嵌套项目构建。