我能够按照以下步骤获得代码覆盖率报告,
启用对所需构建类型的覆盖(例如调试)
buildTypes { 调试{ testCoverageEnabled 真 } }
应用Jacoco插件并设置版本
应用插件:'jacoco' 雅 cocoa { 版本“0.7.1.201405082137” }
运行
./gradlew createDebugCoverageReport
已运行 connectedAndroidTest 中的所有测试,并根据它们生成覆盖率报告。我可以在
中找到覆盖率报告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.ec 转换为使用 emma 的报告,因为 coverage.em 文件丢失了,
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”文件,它对我有用
这就是 Google 在 Android Gradle 插件源代码中所做的。
public static final String FILE_COVERAGE_EC = "coverage.ec";
在 com.android.builder.internal.testing 包下的 SimpleTestCallable.java 中。
关于android - Jacoco 将 coverage.ec 转换为没有 coverage.em 的报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29039751/