关于android中的代码覆盖率,可以参考我前几篇文章:
Android手工测试代码覆盖率增强版
Android手工测试的代码覆盖率
Android UI自动化测试的代码覆盖率
官方生成代码覆盖率报告的流程
gradle为android提供的插件生成代码覆盖率的报告流程为首先在应用目录的生成coverage.ec文件(比如我们的应用package为com.wuba.wuxian.android_0504,那么这个coverage.ec在测试完成时会在android系统的/data/data/com.wuba.wuxian.android_0504/目录下生成),然后pull到本地的项目根目录的build/outputs/code-coverage/connected
目录下,这个时候执行createDebugCoverageReport
根据这个coverage.ec和build/intermediates/classes/debug
目录下的class文件生成报告,报告存放在项目根目录下/build/outputs/reports/coverage/debug
下。这个是官方的流程。
根据coverage.ec生成报告
我们在前一篇文章中得到了手工测试的代码覆盖率文件coverage.ec,现在我们根据这个文件如何生成代码覆盖率的报告呢?
很简单,首先我们将这个文件存放到build/outputs/code-coverage/connected下,然后在build.gradle加入如下语句:
apply plugin: 'jacoco'
def coverageSourceDirs = [
'../app/src/main/java'
]
task jacocoTestReport(type: JacocoReport) {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled = true
html.enabled = true
}
classDirectories = fileTree(
dir: './build/intermediates/classes/debug',
excludes: ['**/R*.class',
'**/*$InjectAdapter.class',
'**/*$ModuleAdapter.class',
'**/*$ViewInjector*.class'
])
sourceDirectories = files(coverageSourceDirs)
executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
doFirst {
new File("$buildDir/intermediates/classes/").eachFileRecurse { file ->
if (file.name.contains('$$')) {
file.renameTo(file.path.replace('$$', '$'))
}
}
}
}
然后我们执行gradle jacocoTestReport
生成报告,报告的存放目录为项目根目录下的 build/reports/jacoco/jacocoTestReport
目录下:
今天的文章Android中根据coverage.ec文件生成报告分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/76026.html