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

单元测试失败时SonarQube不识别Jacoco报告该如何配置?

根因说明

默认Gradle的testDebugUnitTest任务在存在失败测试用例时会被标记为执行失败,Gradle默认会终止后续所有任务的执行,导致Jacoco覆盖率报告生成任务、SonarQube分析任务都不会运行,自然SonarQube无法读取到最新的覆盖率数据。

解决方案

你可以选择以下任意一种方式配置,核心是保证测试失败时后续的报告生成、SonarQube分析任务能正常执行:

方案1:修改Gradle配置全局适配(推荐)

  1. 调整测试任务配置,允许测试用例失败时不标记任务为失败,保证后续任务正常执行:
    修改jacoco.gradle中的Test任务配置块,新增ignoreFailures = true配置:
tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
    jacoco.excludes = ['jdk.internal.*']
    ignoreFailures = true // 新增该行配置
}
  1. 显式声明SonarQube任务依赖Jacoco报告生成任务,保证报告生成完成后再执行SonarQube分析,在sonarQube.gradle末尾添加如下配置:
tasks['sonarqube'].dependsOn jacocoTestReport

配置完成后正常执行gradlew clean testDebugUnitTest sonarqube命令即可,即使测试用例失败也会正常生成覆盖率报告并上传到SonarQube。

方案2:执行命令时添加参数(无需修改配置)

如果不想修改项目配置,可以在执行命令时添加--continue参数,告知Gradle即使前面的任务执行失败,也继续运行后续任务:

gradlew clean testDebugUnitTest sonarqube --continue

该方式不需要修改项目代码,适合临时使用的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:57:02