【问题标题】:Making Maven run all tests, even when some fail让 Maven 运行所有测试,即使有些测试失败
【发布时间】:2011-05-09 15:35:57
【问题描述】:

我有一个包含多个模块的项目。当所有测试都通过时,Maven 测试会运行所有测试。

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

如何让 maven 运行所有测试而不考虑早期的失败?

【问题讨论】:

  • 什么版本的 maven-surefire-plugin?
  • testFailureIgnore 应该可以工作,也许做一个mvn help:effective-pom 以确保它在正确的位置......

标签: java maven-2 maven-surefire-plugin


【解决方案1】:

来自Maven Embedder documentation

-fae,--fail-at-end 只有在之后的构建失败;允许所有未受影响的构建继续

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

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

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

【讨论】:

  • 另外,您可以为 cmd 添加 -e 以提供一些错误信息。
  • 我刚刚测试了选项--fail-never。即使有编译错误,Maven 也不会失败。如果我在 Jenkins 上使用这个选项,即使它有很多编译错误,构建看起来也是成功的。在这种情况下,我更喜欢-Dmaven.test.failure.ignore=true,让 Jenkins 分析可靠的报告。
  • @wlnirvana 我现在用这个链接编辑了帖子(所以请随意删除你的评论...)
  • 可以在pom文件中配置这个吗?
  • @BluE 根据the list of tags 似乎并非如此。也许有一种方法可以直接在pom.xml?中指定-fae
【解决方案2】:

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

【讨论】:

  • 遗憾的是,当我将它传递给 TeamCity 时,此参数不起作用。
  • 在多模块项目中,依赖于测试失败的模块的模块将被跳过。请改用 -fn。
  • @ripper234 你找到让它在 TeamCity 上运行的方法了吗?
  • 可以在pom文件中配置这个吗?
  • 这仅适用于在同一构建树中不依赖于其他模块的模块,请参阅stackoverflow.com/a/12616700/32453
【解决方案3】:

Surefire 配置为<testFailureIgnore>true</testFailureIgnore>

或者在命令行上:

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

【讨论】:

  • IIRC 这具有整个构建没有失败的效果,而不是运行所有测试并最终失败。
  • 这是唯一对我有用的选项......“-fae”选项对测试失败没有任何作用
  • 是的,如果您只有单元测试失败,这将使整个构建“看起来像”它成功通过。 --fail-at-end or -fae 应该让它继续并在最后使构建失败,尽管它也会跳过依赖模块见 stackoverflow.com/a/12616700/32453
【解决方案4】:

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

【讨论】:

  • 正如其他回复中所解释的,这将执行所有测试,但即使有失败也会将构建标记为成功
【解决方案5】:

快速回答:

mvn -fn test

适用于嵌套项目构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多