如何从Jacoco代码覆盖范围中排除片段

时间:2015-12-23 12:18:35

标签: android code-coverage jacoco

我使用下面的代码来排除片段,但我无法从jacoco代码覆盖中驱逐片段,请帮助我。

task jacocoTestReport(type: JacocoReport) {

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

group = "Reporting"
description = "Generates Jacoco coverage reports"
reports {
    xml {
        enabled = true
        destination "${buildDir}/reports/jacoco/jacoco.xml"
    }
    csv.enabled false
    html {
        enabled true
        destination "${buildDir}/jacocoHtml"
    }
}

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

sourceDirectories = files(coverageSourceDirs)
additionalSourceDirs = files(coverageSourceDirs)
executionData = files('build/outputs/code - coverage/connected/flavors/smartcompanion/coverage.ec')
}

我们使用以下命令: -

gradlew connectedCheck
gradlew connectedAndroidTest
gradlew connectedDubugAndroidTest

每次在报道报告中我们都能看到片段。

1 个答案:

答案 0 :(得分:0)

还有另一种排除文件的方法,您可以将它们过滤掉:

classDirectories = fileTree(
    dir: 'build/intermediates/classes/debug',
    excludes: ['**/R.class',
               '**/R$*.class',
               '**/BuildConfig.*',
               '**/Manifest*.*',
               '**/*Fragment*.*'
    ]
).filter ({file -> !file.name.contains('Fragment')})

由于某种原因,我也无法排除碎片。我无法找出问题所在。但是按名称过滤掉它们是可行的。因此,这似乎是一种解决方法,但至少我可以继续进行并完成工作。

我还注意到,在Android上,不同版本的Gradle和jacoco插件并不总是很兼容。因此,尝试降级(或升级)也可能会有所帮助。