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

SpringBoot项目SonarQube分析代码覆盖率0%问题求助

Spring Boot项目SonarQube代码覆盖率显示0%的解决方案

核心问题分析

你的单元测试能正常运行,但SonarQube始终显示覆盖率为0%,结合pom配置来看,主要存在以下几个问题:

  • Jacoco依赖冗余且版本冲突
  • SonarQube未明确指定Jacoco报告路径
  • 多测试框架混合导致Surefire执行异常
  • Jacoco插件配置未与Sonar扫描流程正确衔接

分步修复方案

1. 移除冗余Jacoco依赖

Jacoco仅需作为Maven插件配置,不需要在<dependencies>中添加依赖项。删除以下代码:

<dependency>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.12</version>
</dependency>

2. 统一Jacoco插件版本并优化配置

将Jacoco插件版本统一为稳定版(如0.8.12),确保prepare-agent和report阶段正确执行,覆盖测试过程并生成报告:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.12</version>
    <executions>
        <execution>
            <id>jacoco-prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>jacoco-report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

3. 配置SonarQube读取Jacoco报告

在<properties>中添加SonarQube识别Jacoco报告的必要属性:

<properties>
    <!-- 保留原有属性 -->
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.jacoco.reportPaths>${project.build.directory}/jacoco/jacoco.exec</sonar.jacoco.reportPaths>
</properties>

4. 简化测试框架配置

你同时引入了JUnit4、TestNG和Spring Boot Test,容易导致Surefire插件无法正确识别测试类。建议统一使用Spring Boot Test(已集成JUnit5),删除以下冗余依赖:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.1.0</version>
    <scope>test</scope>
</dependency>

同时更新Surefire插件到适配Java17的版本:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.2.2</version>
</plugin>

5. 正确执行命令

使用以下连贯命令完成测试、覆盖率报告生成和Sonar扫描:

mvn clean test sonar:sonar

验证步骤

  1. 执行mvn clean test后,检查target/jacoco目录下是否生成jacoco.exec文件
  2. 查看target/site/jacoco下的HTML报告,确认本地覆盖率数据正常
  3. 刷新SonarQube页面,检查覆盖率是否更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:24:50