Java 让Maven运行所有测试,即使某些测试失败

Java 让Maven运行所有测试,即使某些测试失败,java,maven-2,maven-surefire-plugin,Java,Maven 2,Maven Surefire Plugin,我有一个有几个模块的项目。当所有测试都通过时,Maven test将运行所有测试 当第一个模块中的测试失败时,maven将不会继续下一个项目。在Surefire设置中,我将testFailureIgnore设置为true,但它没有帮助 如何让maven运行所有测试,而不考虑早期的故障?我刚刚找到了-fae参数,该参数会导致maven运行所有测试,而不会在出现故障时停止。或者使用true进行配置 或在命令行上: mvn install -Dmaven.test.failure.ignore=tru

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

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


如何让maven运行所有测试,而不考虑早期的故障?

我刚刚找到了
-fae
参数,该参数会导致maven运行所有测试,而不会在出现故障时停止。

或者使用
true
进行配置

或在命令行上:

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

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

[...]
org.apache.maven.plugins
maven surefire插件
真的
[...]
来自:

-fae
-在结束时失败
仅在之后使构建失败;允许所有未受影响的生成继续

-fn
-fail never
无论项目结果如何,都不要使构建失败

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

否则,如果您有多个模块,并且如果希望测试所有模块(即使是依赖于失败测试模块的模块),则应运行
mvn clean install-fn

-fae
将继续处理测试失败的模块(将运行所有其他测试),但将跳过依赖该模块的所有模块。

快速回答:

mvn -fn test

可用于嵌套项目生成。

遗憾的是,当我将此参数传递给TeamCity时,此参数不起作用。在多模块项目中,依赖于测试失败的模块的模块将被跳过。改用-fn。@ripper234您找到了一种方法使其在TeamCity上工作吗?您能在pom文件中配置它吗?这只适用于在同一构建树中不依赖于其他模块的模块,请参阅maven surefire插件的哪个版本?testFailureIgnore应该工作,也许做一个
mvn帮助:有效的pom
,以确保它在正确的位置…IIRC这具有整个构建不失败的效果,而不是运行所有测试并最终失败。这是唯一对我有效的选项。。。“-fae”选项对测试失败没有任何作用。如果您只有单元测试失败,这将使整个构建“看起来”成功通过
--fail-at-end或-fae
应使其继续,并在最后使构建失败,尽管它也跳过依赖模块。另外,您可以为cmd添加-e以提供一些错误信息。我刚刚测试了选项
--fail-never
。即使存在编译错误,Maven也不会使构建失败。如果我在Jenkins上使用这个选项,构建看起来是成功的,即使它有很多编译错误。在这种情况下,我更喜欢
-Dmaven.test.failure.ignore=true
,让Jenkins分析surefire报告。@wlnirvana我现在用这个链接编辑了这篇文章(所以可以随意删除你的评论…),你能在pom文件中配置它吗?@BluE根据它看起来不是这样。也许有一种方法可以直接在
pom.xml?