【发布时间】:2015-10-17 04:14:33
【问题描述】:
这是我的情况:
背景
- 我正在调查我们的 Android 应用程序的代码覆盖率。该应用是使用 Gradle 和 Android Studio 构建的。
- 在两种情况下我需要代码覆盖率报告:在手动测试期间,以及在使用我们相当大的 Appium 套件构建的自动化测试期间。
- 我需要快速获得一个概念验证(不是总是这样吗?)所以我没有机会进行彻底的研发。所以请原谅我表现出的任何无知:)
- 我可以访问应用程序源,但对移动部件知之甚少。
- 我调查了 JaCoCo 和 Emma。这个问题与 JaCoCo 有关。
- 鉴于我们需要覆盖 Appium 和手动测试,我相信使用 JaCoCo 进行离线检测是我所需要的。
取得的进展
- 我使用了the JaCoCo plugin page 和the Android Tools page 并且可以正确配置build.gradle。
- 我已验证这些类(存在于
build\intermediates\classes中)使用 JaCoCo 进行检测,并打包在 APK 中。 - 我为this SO discussion 编写了一个BroadCastReceiver,它将接收“结束覆盖”广播。
问题
当我手动运行应用程序时,我一直在 logcat 中看到错误 W/System.err:java.io.FileNotFoundException:/jacoco.exec:打开失败:EROFS(只读文件系统)
来自this SO question 和the JaCoCo docs 我了解到Jacoco 需要知道jacoco.exec 文件的存储位置——并且我需要使用APK 打包一个jacoco-agent.properties(包含destfile 属性) .
我尝试将 jacoco-agent.properties 放入 assets - 它已正确打包到 APK 中,但似乎没有任何效果(即 Jacoco 像往常一样失败)
我试着把它放在res 里面——它没有被打包到 APK 中。
我尝试了res/raw 并遇到了有关文件名中破折号的错误,如this SO question。
我无能为力,非常感谢帮助。如何使用我的 Gradle 构建将 jacoco-agent.properties 打包到 APK 中,以便 JaCoCo 读取它?
相关问题
this SO question,有一个 2013 年的答案,它适用于 Ant,而不是 Gradle。
【问题讨论】:
标签: android android-gradle-plugin code-coverage jacoco