覆盖率统计
通过在前端项目中集成 模块并扩展 webdriver API 方法实现覆盖率收集。
扩展示例:
推荐在每个用例执行后收集:
return driver
.coverage() // 收集覆盖率
.saveScreenshots(this);
});
通过 Macaca Coverage 实现 React, Vue, Angular, 常规前端工程的覆盖率请看更多示例项目。
注意:JavaScript 语言的覆盖率是使用流行的 包完成的,在执行前需要进行插桩。
apply plugin: 'jacoco'
jacoco {
toolVersion = '0.7.9'
android {
buildTypes {
debug {
testCoverageEnabled true
}
}
随后通过反射的方式调用 jacoco 提供的收集方法生成 .exec
文件。
获取 coverage.exec
文件
$ adb pull /storage/emulated/0/coverage.exec .
然后使用 Macaca 提供的覆盖率工具生成报告:
$ macaca coverage -r java -f ./coverage.exec -c ./android_app_bootstrap/build/intermediates/classes/debug -s ./android_app_bootstrap/src/main/java --html ./reporter
注意:Java 语言的覆盖率是使用流行的 jacoco 包完成的,请参考。
iOS 目前的实现需要开启 Xcode IDE 的覆盖率收集开关。然后引入 Macaca 提供的 iOS 端驱动包 xctestwd
进行测试。
注意:下一版本会提供侵入式集成包,直接与应用集成而不依赖 Xcode启动,当前版本还不支持。
在测试执行完成后使用 Macaca 提供的覆盖率工具生成报告:
注意:iOS 平台的覆盖率请参考示例项目。
Macaca 覆盖率工具集成在 macaca-cli
中,请按照 中提供的方式安装即可。
$ macaca coverage -h
Options:
-f, --file <s> coverage file to read(java<*.exec>, web)
-s, --source <s> location of the source files(java only)
-p, --project <s> location of Xcode project(ios only)
-n, --name <s> name of Xcode project's scheme(ios only)
--html <s> generate HTML report
--json <s> generate JSON report
--xml <s> generate XML report(java, ios)
--verbose show more debugging information
-h, --help output usage information
目前支持几种常用格式(html
, xml
, json
) 的报告器。
- 需要指定运行时类型
—runtime
或-r
- Java 语言项目需要传入编译好的
classfiles
地址,如需源码映射需要传入源码地址 - iOS 项目需要工程地址
—project
或 和具体的scheme
名称。