【发布时间】:2016-11-04 23:22:14
【问题描述】:
我的组织中有几个项目混合了单元测试。 其中一半使用 Arquillian,一半使用 Mockito/CDIUnit。
为了获得完整的代码覆盖率,我们必须运行 Jacoco Maven 代理和 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,这是我看到异常的地方。
【问题讨论】:
标签: junit jacoco jboss-arquillian