Gradle Jacoco插件报告零覆盖率

时间:2015-05-21 19:44:37

标签: java gradle code-coverage jacoco eclemma

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

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

我试图找出这两种工具之间的区别是什么?我是否需要Gradle Jacoco插件的附加配置。

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

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

3 个答案:

答案 0 :(得分:2)

这可能意味着jacoco插件未在gradle中正确配置。 在这里,您可以找到Jacoco和gradle的常见错误清单(感谢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
    }
}

答案 1 :(得分:0)

切换到gradle包装时我遇到了同样的问题,但是仍然使用gradle运行jacoco。用gradle包装器运行jacoco解决了这个问题。

This stackoverflow accepted answer帮助我找出了我错过的内容。

答案 2 :(得分:0)

还要检查单元测试是否实际运行。如果您在Junit5上遇到麻烦,它可能会自动失败。添加--info并检查错误消息。