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

Gradle+Kotlin+JUnit5+Jacoco配置后覆盖率显示0%问题求助

解决Gradle+Kotlin+Jacoco+JUnit5覆盖率报告显示0%的问题

我之前也碰到过类似的坑,结合你的配置和描述,大概率是几个关键配置或路径问题导致的,咱们一步步来排查修复:

首先排查最容易踩的路径坑

你提到项目目录是project/{src,test}/main/kotlin——这可能是核心问题!正常Gradle Kotlin项目的测试代码应该放在src/test/kotlin下,而不是test/main/kotlin。如果测试代码位置不对,Gradle的test任务根本找不到你的测试用例,自然不会生成任何覆盖数据,报告显示0%也就不奇怪了。

先把测试代码移到src/test/kotlin目录下,这是第一步。

修正Jacoco配置中的关键问题

你的现有配置存在几个可以优化的地方,调整后应该能正常生成覆盖率数据:

1. 明确启用JUnit 5执行

在test任务里一定要加上useJUnitPlatform(),否则Gradle可能不会用JUnit 5去执行你的测试用例:

test {
    useJUnitPlatform() // 必须添加,开启JUnit 5支持
    jacoco {
        append = false
        destinationFile = file("$buildDir/jacoco/test.exec")
        includeNoLocationClasses = true
    }
}

2. 让Jacoco报告依赖测试任务

确保jacocoTestReport在测试执行完成后再生成,避免拿到空的执行数据:

jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage report."
    dependsOn(test) // 关键:先跑测试再生成报告

    // 用源码集引用类目录,避免硬编码路径出错
    classDirectories.setFrom(files(sourceSets.main.output.classesDirs))
    
    // 同样用源码集引用源码目录,更可靠
    def coverageSourceDirs = sourceSets.main.allSource.srcDirs
    sourceDirectories.setFrom(files(coverageSourceDirs))
    additionalSourceDirs.setFrom(files(coverageSourceDirs))
    
    // 引用test任务生成的Jacoco执行数据
    executionData.setFrom(file("$buildDir/jacoco/test.exec"))

    reports {
        xml.enabled = true
        html.enabled = true
        csv.enabled = true
    }
}

3. 升级Jacoco版本

你当前用的是0.7.9,这个版本比较老,对Kotlin和JUnit 5的兼容性不太好,建议升级到0.8.10+:

jacoco {
    toolVersion = "0.8.10"
    reportsDir = file("$buildDir/reports")
}

确认你看的是正确的报告

你说在build/reports/test/html看到0%覆盖率,但这个路径其实是JUnit的测试结果报告,不是Jacoco的覆盖率报告!根据你的配置,Jacoco覆盖率报告应该生成在build/reports/jacocoTestReport/html/index.html,别搞混了路径哦。

验证步骤

  1. 运行./gradlew test,看控制台输出,确认你的测试用例被执行了(会显示类似X tests completed, Y failed的信息)。
  2. 检查build/jacoco/test.exec文件是否存在,这个文件是Jacoco生成的覆盖数据,不存在的话说明测试没执行或者Jacoco配置有问题。
  3. 运行./gradlew jacocoTestReport,然后打开build/reports/jacocoTestReport/html/index.html查看覆盖率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:27:18