从coverage.ec文件获取覆盖信息

时间:2018-03-02 05:32:17

标签: android testing mobile jacoco emma

我使用的是一种移动测试工具,可以在一个名为coverage.ec的文件上生成覆盖率报告(使用EMMA)。该文件不可读,但我想知道如何访问它包含的信息。我只需要阅读一般的覆盖百分比。

1 个答案:

答案 0 :(得分:0)

我情况非常相似。我有一个coverage.ec文件,我不知道如何将其转换为可读报告。 This article was very helpful for me.

那里有比你需要的更多的信息,但对我来说,重要的是将它添加到build.gradle:

apply plugin: 'jacoco'

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

task jacocoTestReport(type : JacocoReport, dependsOn : 'testDebugUnitTest') {
group       = 'Reporting'
description = 'Generate JaCoCo coverage reports'

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

classDirectories = fileTree(
    dir      : 'build/intermediates/classes/debug',
    excludes : [
        '**/R.class',
        '**/R$*.class',
        '**/*$ViewInjector*.*',
        '**/*$ViewBinder*.*',
        '**/BuildConfig.*',
        '**/Manifest*.*',
        '**/*RealmProxy.*',
        '**/*ColumnInfo.*',
        '**/*RealmModule*.*',
        '**/AutoValue_*.*',
        '**/Dagger*.*',
        '**/*Module_Provide*Factory.*',
        '**/*_Factory.*',
        '**/*_MembersInjector.*',
        '**/*_LifecycleAdapter.*'
    ]
)

sourceDirectories = files(coverageSourceDirs)
executionData     = fileTree(
    dir     : "$buildDir",
    include : [ 'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec' ]
)

doFirst {
    files('build/intermediates/classes/debug').getFiles().each { file ->
        if (file.name.contains('$$')) {
            file.renameTo(file.path.replace('$$', '$'))
        }
    }
}}

从这里开始,我将coverage.ec文件放在app / build / outputs / code-coverage / connected / coverage.ec中。

之后,我运行了jacocoTestReport gradle任务,它为我的单元测试和来自app / build / reports / jacoco / jacocoTestReport / html / index.html中的coverage.ec文件的报告生成合并报告

希望这有帮助!