【问题标题】:Maven build fails with test failures, but all surefire reports are okMaven 构建因测试失败而失败,但所有安全报告均正常
【发布时间】:2015-03-24 16:36:52
【问题描述】:

当我在我的项目上构建 Maven 时,我得到以下信息:

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.

请参考。

但是,我所有的可靠报告都显示 0 个失败和 0 个错误。

任何想法可能导致此问题或如何找出?

问候,

奥利

【问题讨论】:

  • 我认为你一定是疏忽了一些事情,因为 [INFO] There are test failures. 行显示有些测试失败了......

标签: maven surefire


【解决方案1】:

这可能是因为计算机内存不足。

通过将日志重定向到单独的日志文件来运行 maven 构建解决了我的问题

mvn clean install > log-file.log

请注意,如果内存不足确实是问题(就像我的情况),那么它也取决于我们正在执行的命令。例如,mvn clean install eclipse:clean eclipse:eclipse 命令在将日志重定向到文件而不是控制台时运行良好,但是当我使用带有 -X 标志的 maven 命令并运行该命令时,即使我将输出重定向到日志,我也再次遇到了问题文件

请参阅以下可能是类似问题的答案:

The forked VM terminated without saying properly goodbye. VM crash or System.exit called

【讨论】:

    【解决方案2】:

    将项目从 Java 8 升级到 9 后,我遇到了同样的问题。

    我的测试在从我的 IDE 运行时通过,但在使用 maven 运行时失败,并且所有可靠报告都是干净的,没有失败。

    然后我打开了一份在 ${project_dir}/target/surefire-reports/testng-junit-results 中找到的 html surefire 报告,在那里我看到了来自该故障的整个堆栈跟踪,它与 java.base 模块有关我之前遇到过问题(标准 Java 9 模块可访问性问题),所以我意识到我必须在我的万能插件 argLine 中添加一些 --add-opens 标志:

    --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED 
    --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
    

    这个问题非常令人沮丧,因为错误并不直观,我仍然不明白为什么它只是没有像我一样说“模块 java.base 不会“打开 jdk.internal.loader”到未命名的模块”以前见过。

    【讨论】:

      【解决方案3】:

      检查使用的surefire版本并确保它是最新的。如果不能完全纠正问题,这可能足以让您了解失败的原因。

      如果同样的问题仍然存在,暂时将forkCount 属性设置为 0 并重新运行构建。我以前见过 Surefire 吞下来自分叉进程的异常。如果发生这种情况,不使用分叉会让您看到异常,以便您可以更正问题。

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 2015-12-07
        • 1970-01-01
        • 2015-11-15
        • 1970-01-01
        • 1970-01-01
        • 2020-01-16
        • 2016-05-14
        • 2011-06-29
        相关资源
        最近更新 更多