java - Gradle Jacoco 插件报告零覆盖率

标签 java gradle code-coverage jacoco eclemma

在运行 Gradle 的 Jacoco 插件时,我在一组选定的类上报告的代码覆盖率为零。我已确认测试这些类的所有单元测试已成功运行。

非常有趣的是,Eclipse 中的 EclEmma 生成了正确的代码覆盖率结果。我已确认这两个工具使用的是相同版本的 Jacoco。

我想弄清楚这两种工具之间的区别是什么?我需要 Gradle Jacoco 插件的额外配置吗?

编辑:我的 Gradle Jacoco 输出显示“类 com/.... 的执行数据不匹配”

更新:我在 Eclipse 中打开了 Jacoco 生成的 test.exec 文件。它显示缺少覆盖率的类执行了 80% 的探测。

最佳答案

这可能意味着 jacoco 插件没有在 gradle 中正确配置。 在这里您可以找到 Jacoco 和 gradle 的常见错误 list (感谢 Taeho Kim 的明确回答):https://stackoverflow.com/a/23965581/2166900

此外,这是我在上一个 Android 项目中使用的配置,对我有用:

apply plugin: 'jacoco'

jacoco {
    toolVersion = "0.7.2.+"
}

def coverageSourceDirs = [
        'src/main/java'
]

task jacocoTestReport(type:JacocoReport, dependsOn: "testDebug") {
    group = "Reporting"

    description = "Generate Jacoco coverage reports"

    classDirectories = fileTree(
            dir: 'build/intermediates/classes/debug',
            excludes: ['**/R.class',
                       '**/R$*.class',
                       '**/*$ViewInjector*.*',
                       '**/BuildConfig.*',
                       '**/Manifest*.*']
    )

    additionalSourceDirs = files(coverageSourceDirs)
    sourceDirectories = files(coverageSourceDirs)
    executionData = files('build/jacoco/testDebug.exec')

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

关于java - Gradle Jacoco 插件报告零覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382982/

相关文章:

java - 具有单独测试模块的 Maven 多模块项目 - 代码覆盖率?

java - 计划上手代码覆盖工具

java - 复选框的值未保存在数据库中

android - Bamboo + Android + Gradle : how to produce signed apk?

android espresso 测试 : empty test suite. 未找到测试

go - Bazel Golang 综合覆盖率报告

java - 可序列化类 为什么?如何?在 java

java - 如何解决 Java 代码中的 ORA-01795

java - 当我按下一个键时,我的 mainBall 类不会重新绘制

java - Android Gradle风格在Java中获取buildConfigField