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

已编写单元测试但SonarQube显示覆盖率为0%,求检查build.gradle配置

配置问题排查及修正方案

你提供的build.gradle存在多处配置错误,是导致SonarQube覆盖率显示为0的核心原因,具体问题及修正方案如下:

现有配置的问题列表

  • 拼写错误:sonarqube配置块中的sonarjava.source缺少小数点,正确属性名为sonar.java.source
  • 报告路径属性不匹配:你使用的3.2.0版本sonarqube插件已废弃sonar.jacoco.reportPaths属性,需替换为sonar.coverage.jacoco.xmlReportPaths
  • 空属性无效配置:sonar.java.test.binaries未配置对应值,会导致SonarQube无法正常读取测试编译产物
  • Java版本不匹配:全局sourceCompatibility指定为15,但sonar.java.source配置为1.8,版本不一致会导致覆盖率解析失败
  • 缺少Jacoco报告生成规则:仅引入jacoco插件未配置xml报告生成逻辑,默认Jacoco仅生成二进制exec文件,SonarQube无法直接读取该格式文件
  • 依赖配置不规范:testCompile已在新版Gradle中废弃,建议替换为testImplementation;同时你已开启JUnit Platform(JUnit5),但同时依赖了JUnit4,需确认测试用例的JUnit版本是否匹配

修正后的配置参考

plugins {
    id 'org.springframework.boot' version '2.4.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id "org.sonarqube" version "3.2.0"
    id 'jacoco'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '15'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.apache.httpcomponents:httpcore:4.4.1'
    implementation 'org.apache.httpcomponents:httpclient:4.5'
    implementation('io.jsonwebtoken:jjwt:0.2')
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    // 若确实使用JUnit4保留,否则建议删除
    testImplementation 'junit:junit:4.12'
    implementation 'org.modelmapper:modelmapper:2.4.1'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.eclipse.jgit:org.eclipse.jgit:5.4.2.201908231537-r'
    testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '2.19.0'
    testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.19.0'
    testImplementation group: 'org.springframework.security', name: 'spring-security-test', version: '5.1.6.RELEASE'
}

// 新增jacoco报告生成配置
jacocoTestReport {
    reports {
        xml.enabled true
        csv.enabled false
        html.enabled true
    }
    dependsOn test // 确保测试跑完再生成报告
}

sonarqube{
    properties{
        property 'sonar.java.source', '15' // 与全局sourceCompatibility保持一致
        property 'sonar.java.coveragePlugin', 'jacoco'
        property 'sonar.coverage.jacoco.xmlReportPaths', 'build/reports/jacoco/test/jacocoTestReport.xml'
        property 'sonar.java.test.binaries', 'build/classes/java/test' // 补充测试产物路径
        property 'sonar.java.binaries', 'build/classes/java/main' // 补充主代码产物路径
    }
}

test {
    useJUnitPlatform()
    finalizedBy jacocoTestReport // 执行测试后自动生成覆盖率报告
}

执行命令说明

配置修正后直接执行以下命令即可,任务会自动按顺序完成测试、生成覆盖率报告、上传数据到SonarQube:
./gradlew sonarqube

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 04:45:04