我可以按照以下步骤获取代码覆盖率报告,
buildTypes {
debug {
testCoverageEnabled true
}
}
apply plugin: 'jacoco'
jacoco {
version "0.7.1.201405082137"
}
./gradlew createDebugCoverageReport
app/build/outputs/reports/coverage/{buildType}/index.html
和一个coverage.ec文件
app/build/outputs/code-coverage/connected/coverage.ec
但是没有jacoco.exec,因为我从Android Instrumentation而不是Robolectric测试用例运行。
当我从ADB运行仪器(我猜这仍然使用Emma)如下所示,我得到一个coverage.ec文件,如下所示,
$ adb shell am instrument -w -e coverage true -e coverageFile /sdcard/coverage.ec com.sample.helloworld.test/.Runner
....
OK (4 tests)
Generated code coverage data to /sdcard/coverage.ec
但由于coverage.em文件丢失,我无法将coverage.ec转换为使用emma报告,
java -cp ~/adt-bundle-mac-x86_64-20130729/sdk/tools/lib/emma_device.jar emma report -r html -in \
coverage.em,myFile.ec,myapp_coverage1.ec -sp /path/to/myapp/src
有没有办法解决这个问题?
只需使用“coverage.ec”作为“.exec”文件,它对我有用
这就是谷歌在Android Gradle Plugin源代码中所做的。
public static final String FILE_COVERAGE_EC =“coverage.ec”;
在com.android.builder.internal.testing包下的SimpleTestCallable.java中。
我写了一篇关于同一场景和我的解决方案的文章。 You can read it here。要回答此特定问题,您应该执行以下步骤:将gradle更改为:
apply plugin: 'jacoco'
jacoco {
toolVersion = '0.7.5.201505241946'
}
第二个download this jar。继续你所做的事情,直到你有coverage.ec文件。然后,当你运行它:
java -jar android-jacoco-the-missing.jar -f /path/to/coverage.ec -p ./path/to/android/project
就是这样! jar将生成一个包含代码覆盖率的文件夹。
另一种选择是将coverage.ec与Jenkins Jacoco插件一起使用。但是为此你需要让Jenkins开启。
去掉 。从以下命令为我的工作
java -jar android-jacoco-the-missing.jar -f /path/to/coverage.ec -p /path/to/android/project
要获得coverage.ec
文件的覆盖范围,只需将其重命名为coverage.exec
并使用“显示覆盖率数据”选项打开它
“显示覆盖率数据”可在Android Studio的“分析”选项下找到。
使用Android Studio 3.3验证了这一点