android - Jacoco 将 coverage.ec 转换为没有 coverage.em 的报告

标签 android android-studio android-gradle-plugin jacoco emma

我能够按照以下步骤获得代码覆盖率报告,

  1. 启用对所需构建类型的覆盖(例如调试)

    buildTypes { 调试{ testCoverageEnabled 真 } }

  2. 应用Jacoco插件并设置版本

    应用插件:'jacoco' 雅 cocoa { 版本“0.7.1.201405082137” }

  3. 运行

    ./gradlew createDebugCoverageReport

  4. 已运行 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/

相关文章:

android - 在 Android 上使用 DU

java - 如何让计时器在后台运行以在一定时间后执行操作?

android - 错误 :Execution failed for task ':app:packageAllDebugClassesForMultiDex' java. util.zip.ZipException:重复条目:com/amazonaws/auth/

android - Gradle Test Executor使用非零退出代码完成

android - 如何在Android Gradle项目的项目配置阶段之前定义ANDROID_HOME?

java - 销毁或压低后,房间数据将无法持久保存,并重新回到 Activity 中

java - TabLayout 不可用,错误膨胀,导入的所有内容但不是 "visible"

android - adb pull pc 指定文件夹中的文件

android - 为什么gradle的构建无法完成?

java - Dagger 依赖冲突 android studio