1

我有一些Arquillian测试(包括Drone/Graphene测试)的maven项目。缺少Jacoco代码覆盖率和IncompatibleClassChangeError

当我建立使用maven使用石墨烯和无人机或经我所有的Arquillian测试将失败,以下异常

Running de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.862 sec <<< FAILURE! - in de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest 
de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest Time elapsed: 4.862 sec <<< ERROR! 
org.jboss.shrinkwrap.api.exporter.ArchiveExportException: Failed to write asset to output: /WEB-INF/classes/de/mmo/base/dao/CrudService.class 
Caused by: java.lang.IncompatibleClassChangeError: class org.jacoco.core.internal.flow.ClassProbesVisitor has interface org.objectweb.asm.ClassVisitor as super class 

这是魔术应该发生

<build> 
    <finalName>browser</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.2</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <tagBase>...</tagBase> 
       <useReleaseProfile>false</useReleaseProfile> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>jacoco</id> 
     <dependencies> 
      <dependency> 
       <groupId>org.jacoco</groupId> 
       <artifactId>org.jacoco.core</artifactId> 
       <scope>test</scope> 
      </dependency> 
     </dependencies> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <version>${jacoco}</version> 
        <executions> 
         <execution> 
          <goals> 
           <goal>prepare-agent</goal> 
          </goals> 
         </execution> 
         <execution> 
          <id>report</id> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>report</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    <profile> 
     <id>arq-wildfly</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>${maven.surefire}</version> 
        <configuration> 
         <skipTests>false</skipTests> 
         <systemPropertyVariables> 
          <arquillian.launch>wildfly-remote</arquillian.launch> 
         </systemPropertyVariables> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    <profile> 
     <id>default</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>${maven.surefire}</version> 
        <configuration> 
         <skipTests>true</skipTests> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.wildfly.plugins</groupId> 
        <artifactId>wildfly-maven-plugin</artifactId> 
        <version>${wildfly.maven-plugin}</version> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

的地方我的项目我正在使用mvn来建立我的项目与此目标清洁包-fae与此配置文件jacoc o arq-wildfly

构建失败,并在我的目标目录中创建jacoco.exec文件。

如果我删除目标准备代理在jacoco轮廓和运行相同的MVN指令(清洁套装-fae)与型材jacoco ARQ-wildfly我所有的测试完成全成,但没有创造jacoco.exec文件。

我在做什么错了?有人有一个使用Arquillian的Drone/Graphene测试和Jacoco代码覆盖率的工作示例吗?

有关我的环境的附加信息:

  • Wildfly 10
  • 的Arquillian核心1.1.11.Final
  • 的Arquillian无人机1.3.1.Final
  • 的Arquillian石墨烯2.1.0.Beta1
  • Arquillian Jacoco 1.0.0.Alpha8
  • Jacoco 0.7.6.201602180812

回答

5

你的类路径上有多个asm版本,jacoco需要最新版本。

使用mvn dependency:tree找到ASM版本,我觉得你有ASM:ASMorg.ow2.asm:ASM-调试,一切都在你的依赖

排除旧的版本(ASM:ASM):

<dependency> 
    <groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <exclusions> 
     <exclusion> 
      <artifactId>asm</artifactId> 
      <groupId>asm</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

对于无人机将是这样的:

<dependency> 
    <groupId>org.jboss.arquillian.graphene</groupId> 
    <artifactId>graphene-webdriver</artifactId> 
    <type>pom</type> 
    <scope>test</scope> 
    <exclusions> 
     <exclusion> 
      <artifactId>asm</artifactId> 
      <groupId>asm</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 
与该ASM需要依赖以下
相关问题