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

使用JaCoCo插件的SonarQube能否分开查看单元与集成测试覆盖率?

在SonarQube+JaCoCo中分开查看单元/集成测试覆盖率

当然可以!在SonarQube搭配JaCoCo的场景下,完全能分开查看单元测试和集成测试的覆盖率——关键是要把两类测试的覆盖率数据分开生成,再告诉SonarQube分别对应哪份报告就行。下面是具体的实现步骤:

1. 分开生成两类测试的JaCoCo覆盖率数据

首先得让JaCoCo为单元测试和集成测试分别生成独立的覆盖率文件:

  • 单元测试:一般构建工具(比如Maven/Gradle)的默认测试任务(Maven的test阶段、Gradle的test任务)会自动触发单元测试,JaCoCo默认会生成对应的覆盖率数据文件(比如Maven下是target/jacoco/jacoco.exec,Gradle下是build/jacoco/test.exec)。
  • 集成测试:需要单独配置集成测试的构建任务(比如Maven的verify阶段、Gradle的integrationTest自定义任务),同时指定JaCoCo为这个任务生成独立的覆盖率文件,比如输出到target/jacoco/jacoco-it.exec(Maven)或build/jacoco/integrationTest.exec(Gradle)。

2. 配置SonarQube扫描参数

执行SonarQube扫描时,要明确指定两类覆盖率文件的路径,让SonarQube能区分开单元和集成测试的覆盖率:

Maven示例

可以在命令行添加参数,或者在pom.xml的SonarQube插件配置里指定:

mvn sonar:sonar \
  -Dsonar.java.coveragePlugin=jacoco \
  -Dsonar.jacoco.reportPaths=target/jacoco/jacoco.exec \
  -Dsonar.jacoco.itReportPaths=target/jacoco/jacoco-it.exec

Gradle示例

在build.gradle的SonarQube配置块中添加参数:

sonarqube {
  properties {
    property "sonar.java.coveragePlugin", "jacoco"
    property "sonar.jacoco.reportPaths", "build/jacoco/test.exec"
    property "sonar.jacoco.itReportPaths", "build/jacoco/integrationTest.exec"
  }
}

注意:如果是SonarQube 9.x及以上的新版本,部分参数名称可能调整为sonar.jacoco.xmlReportPaths,需要对应改成XML格式的报告路径,具体可以参考对应版本的配置要求。

3. 在SonarQube界面查看分开的覆盖率

扫描完成后,进入项目的SonarQube页面:

  • 在项目Overview页的覆盖率统计卡片里,你会看到总覆盖率,点击卡片进入详情页。
  • 在Coverage详情页的顶部,有一个下拉菜单,可以切换选择Unit Tests Coverage和Integration Tests Coverage,两类测试的行覆盖率、分支覆盖率等细分指标会分别展示,一目了然。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:08:32