Arquillian Jacoco Extension + Jacoco Agent 抛出大量异常

Arquillian Jacoco Extension + Jacoco Agent throws lots of exceptions

我的组织中有几个项目混合使用单元测试。 其中一半使用 Arquillian,一半使用 Mockito/CDIUnit.

为了获得完整的代码覆盖率,我们必须 运行 Jacoco Maven Agent 和 Arquillian Jacoco Exception。

它工作正常但是当我们 运行 两者都尝试检测所有 类 并且 Arquillian 测试将抛出数千个异常:

Caused by: java.lang.IllegalStateException: Class com/google/common/collect/RegularImmutableAsList is already instrumented.
at org.jacoco.agent.rt.internal_6da5971.core.internal.instr.InstrSupport.assertNotInstrumented(InstrSupport.java:89)
at org.jacoco.agent.rt.internal_6da5971.core.internal.instr.ClassInstrumenter.visitField(ClassInstrumenter.java:55)
at org.jacoco.agent.rt.internal_6da5971.asm.ClassVisitor.visitField(ClassVisitor.java:272)
at org.jacoco.agent.rt.internal_6da5971.asm.ClassReader.readField(ClassReader.java:768)
at org.jacoco.agent.rt.internal_6da5971.asm.ClassReader.accept(ClassReader.java:689)
at org.jacoco.agent.rt.internal_6da5971.asm.ClassReader.accept(ClassReader.java:506)
at org.jacoco.agent.rt.internal_6da5971.core.instr.Instrumenter.instrument(Instrumenter.java:84)
at org.jacoco.agent.rt.internal_6da5971.core.instr.Instrumenter.instrument(Instrumenter.java:108)

我的问题是,有什么方法可以同时包含 maven 侦听器和 Arquillian Jacoco Exension 吗?我们能否配置 Arquillian 扩展,使其不尝试重新检测 类,或者至少不打印堆栈跟踪?

我预计有人会说不要混合 Arquillian 和 Mockito,但如果这是唯一的答案,我的团队将投票放弃 Arquillian。

您可以在此处看到一个配置了两种类型测试的小项目: GitHub - teacurran/alwaysawake-server

要查看构建期间抛出的堆栈跟踪示例,您可以在此处查看: teacurran-alwaysawake-server.master.ci #8 Console

似乎 Arquillian JaCoCo Extension 工具 类 已经被 JaCoCo agent 工具化了,反之亦然。

我不知道 Arquillian JaCoCo Extension 的用途以及为什么它需要执行检测而不是依赖 JaCoCo 代理执行的检测,但您可以配置 jacoco-maven-plugin goal "prepare-agent" that manages configuration of JaCoCo agent 以排除 类 .

顺便说一句,作为 JaCoCo 开发人员,我有兴趣了解更多关于 Arquillian JaCoCo 扩展的信息。遗憾的是 https://github.com/arquillian/arquillian-extension-jacoco

页上没有太多信息