如何为Android应用程序提供Jacoco代理?

4
我正在尝试使用Jacoco进行手动测试的代码覆盖率。 我正在尝试使用离线插装。在http://www.eclemma.org/jacoco/trunk/doc/offline.html中提到: 配置文件:如果类路径上提供了文件jacoco-agent.properties,则会从此文件加载选项。
我的问题是如何提供这个文件?在其他一些论坛中,我看到需要将jacoco-agent.properties与应用程序一起部署。
我试图将jacoco-agent.properties放在res / raw下,但它抱怨文件名中的“-”。
我试图将其放在根目录下,但没有任何效果。 我想知道如何设置\运行jacoco以便使用jacoco-agent.properties

你还应该注意你正在使用哪个集成开发环境(IDE)。 - rekire
我试图使用Maven从命令行完成这个任务。 - user1819441
将资源文件放在src/main/resources中即可。 - Larry Liang
1个回答

3

至少对于Ant命令行构建,诀窍是将jacoco-agent.properties放在src目录中,这样它将被打包为APK文件的根目录,并且可以正确地读取(即我可以看到设置destfile属性会影响执行数据文件的创建位置)。

然而,对我来说,创建的jacoco.exec文件总是为空的(就像这里提到的那样),可能是因为JaCoCo只在JVM终止时写入执行数据,但Android的Dalvik VM在应用停止时不会终止

我们当前解决这个问题的方法是显式调用:

org.jacoco.agent.rt.RT.getAgent().getExecutionData(false)

当我们的自定义测试运行器完成时,将返回的字节数组写入文件。

有没有关于使用Gradle将jacoco-agent.properties打包到APK中的更新? - Vish
为什么要使用Gradle提供该文件?使用Gradle,JaCoCo覆盖率可以直接使用,只需将testCoverageEnabled设置为您的构建类型的true,例如请参见此示例 - sschuberth
如果我说它仅适用于单元测试,那么它能够“开箱即用”,这样说是否正确? - Vish
它可以直接使用,适用于单元测试(test sourceSet)和功能测试(androidTest sourceSet)。 - sschuberth
好的。这是我的情况:Appium以及手动测试需要覆盖范围:https://dev59.com/GZDea4cB1Zd3GeqPYC-g - Vish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接