我使用了一个移动测试工具,该工具在名为 coverage.ec 的文件上生成覆盖率报告(使用 EMMA)。该文件不可读,但我想知道如何访问它包含的信息。我只需要阅读一般的覆盖率。
最佳答案
我的情况非常相似。我有一个 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 文件中的报告生成了一个合并报告
希望这对您有所帮助!
关于android - 从 coverage.ec 文件获取覆盖率信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063328/