Spoon 和 Jacoco 与 gradle

Spoon and Jacoco with gradle

我使用了最新的 gradle 版本(3.3)和最新的 android gradle 插件(2.3.3)和最新的 jacoco 版本(0.7.7)。我能够像魅力一样获得覆盖率报告和测试结果。

但是在我添加 spoon 插件的那一刻(我什至没有应用 spoon 插件,只是将它添加到构建脚本块中的类路径)我开始遇到 jacoco 代理错误(java.lang.NoClassDefFoundError: org/jacoco/agent/rt/internal_b0d6a23/Offline)。我看到了关于错误的多个问题,但是 none 的解决方案有效,除非我使用过时版本的 android gradle 插件和带勺子的 jacoco。

如果有人真正解决了问题,请提供帮助。

如果 jacocoagent.jar 的 Jacoco 版本与插件(在本例中为 spoon 插件)预期的版本不同,则会发生此错误。 org/jacoco/agent/rt/internal_b0d6a23/Offline 对于不同版本的 jacoco 有不同的 internal_id/offline 名称。这就是为什么会出现错误。

如果其他人遇到此错误,请尝试使用带有 --info 标志的命令行 运行 grade 命令和带有 "org/jacoco/agent/rt/internal_" 的 grep 来检查是否使用了不同版本的 Jacoco。

然后在您的 gradle 依赖关系图中检查不同版本的 Jacoco,以检查哪个库导致了问题。