首页 文章

Gradle Jacoco Plugin报告零覆盖率

提问于
浏览
4

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

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

我想弄清楚这两个工具之间有什么区别?我是否需要Gradle Jacoco插件的附加配置 .

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

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

2 回答

  • 1

    这可能意味着jacoco插件不是't configured correctly in gradle. Here you can find a checklist of common errors with Jacoco and gradle (Thanks to 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
        }
    }
    
  • 0

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

    This stackoverflow accepted answer帮我弄明白我错过了什么 .

相关问题