Jacoco Offline instrument error Didn‘t find class “org.jacoco.agent.rt.internal_43f5073.Offline“

背景

使用开发项目gradle 开启testCoverageEnable =true 来插桩生成aar包
但是不知道其jacoco 版本,将其插桩后的aar,放入安卓自动化测试项目中进行测试。
在测试时报错 Error Didn’t find class “org.jacoco.agent.rt.internal_43f5073.Offline”

解决思路

查看官网后发现有Q&A https://www.eclemma.org/jacoco/trunk/doc/faq.html

Why do I get a NoClassDefFoundError or ClassNotFoundException for class org.jacoco.agent[…]Offline?
If you use offline instrumentation the instrumented classes get a direct dependency on the JaCoCo runtime. Therefore jacocoagent.jar of the same JaCoCo version must be on the classpath and accessible from by the instrumented classes.

意思就是离线插桩class 是对jacoco runtime 版本有依赖,所以jacocoagent 版本必须和插桩版本一致,并且能被访问。

操作

在jacoco 官网下载command line tool和jacoco-agent-runtime https://repo1.maven.org/maven2/org/jacoco/org.jacoco.cli/0.8.4/
使用org.jacoco.cli-0.8.4-nodeps.jar 手动插桩aar包,然后将org.jacoco.agent-0.8.4-runtime.jar,本地依赖于安卓自动化测试里(gradle 配置)
repository{
flatDir {
dirs “${rootDir}/libs”
}
}
dependency{
implementation(name: ‘org.jacoco.agent-0.8.4-runtime’, ext: ‘jar’)
}
再运行自动化测试,就不会再报"org.jacoco.agent.rt.internal_43f5073.Offline"

后续

该解决方案都是在本地加依赖解决的,后续查看下是否能将上述2个jacoco 工具包通过gradle 配置来从maven center 获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值