You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让JaCoCo在Maven项目测试失败时仍生成代码覆盖率报告?

问题:Maven+JaCoCo环境下,测试失败时无法生成覆盖率报告

我在VS Code中开发Java项目,采用Maven作为构建框架,已配置JaCoCo用于生成单元测试代码覆盖率报告,执行的命令是:

mvn jacoco:prepare-agent test install jacoco:report -X 

但当存在至少一个失败测试时,代码覆盖率报告无法生成,报错信息如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.2.2:test (default-test) on project <REDACTED> There are test failures.
[ERROR] 
[ERROR] Please refer to <REDACTED>/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.

我曾查阅类似问题,大多针对Android/Gradle环境,或建议使用-Djacoco.haltOnFailure=false参数,尝试执行以下命令后仍无效:

mvn jacoco:prepare-agent test install -Djacoco.haltOnFailure=false jacoco:report -X 

请问如何让JaCoCo忽略测试失败,正常生成覆盖率报告?

解决方法

  • 核心原因:测试失败时Maven的test阶段直接终止流程,导致后续的jacoco:report目标根本没机会执行。-Djacoco.haltOnFailure=false是控制JaCoCo本身是否因收集数据失败终止,而非控制Maven是否忽略测试失败。

  • 方法1:命令行添加参数忽略测试失败
    在命令中添加Surefire插件的参数-Dmaven.test.failure.ignore=true,这个参数会让Maven在测试失败后继续执行后续阶段。修改后的命令:

    mvn jacoco:prepare-agent test install jacoco:report -X -Dmaven.test.failure.ignore=true
    
  • 方法2:在pom.xml中配置Surefire插件
    如果不想每次命令都加参数,可以直接在项目的pom.xml中配置Surefire插件,设置忽略测试失败:

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.2.2</version>
          <configuration>
            <testFailureIgnore>true</testFailureIgnore>
          </configuration>
        </plugin>
      </plugins>
    </build>
    

    配置后,直接执行原来的命令即可,测试失败时Maven会继续走流程生成覆盖率报告。

  • 额外提示

    • 如果测试失败后不需要将构件安装到本地仓库,可以去掉命令中的install阶段,简化为mvn jacoco:prepare-agent test jacoco:report -X -Dmaven.test.failure.ignore=true
    • 忽略测试失败后,测试失败的详细结果依然会保存在target/surefire-reports目录中,不会丢失相关信息

内容的提问来源于stack exchange,提问作者Calseon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:59:53