我有一个带有一些Arquillian测试的maven项目(包括无人机/石墨烯测试) .
当我使用maven构建我的项目时,所有使用Graphene和Drone或Warp的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用这个目标构建我的项目 clean package -fae 与此配置文件 jacoco arq-wildfly
构建失败,并在我的目标目录中创建jacoco.exec文件 .
如果我删除jacoco配置文件中的目标 prepare-agent 并使用配置文件 jacoco arq-wildfly 运行相同的mvn命令( clean package -fae ),则所有测试都会成功完成但不创建jacoco.exec文件 .
我做错了什么?是否有人使用Arquillian与Drone / Graphene测试和Jacoco进行代码覆盖?
有关我的环境的其他信息:
-
Wildfly 10
-
Arquillian Core 1.1.11.Final
-
Arquillian无人机1.3.1.Final
-
Arquillian Graphene 2.1.0.Beta1
-
Arquillian Jacoco 1.0.0.Alpha8
-
Jacoco 0.7.6.201602180812
1 回答
您的类路径上有多个asm版本,jacoco需要最新版本 .
使用
mvn dependency:tree
查找asm版本,我认为你的依赖项中有 asm:asm 和 org.ow2.asm:asm-debug-all .对于需要asm的依赖项,使用以下内容排除旧版本(asm:asm):
对于无人机,它将是这样的: