我们正在尝试从使用 gwt-test-utils 编写的一组单元测试中为我们的 GWT 应用程序生成覆盖率报告。该项目是一个多模块的Maven项目。我们在 jenkins 上使用声纳插件来生成和整理我们的覆盖范围和违规信息。
当构建作业运行所有 GWT 单元测试作为正常构建的一部分通过时,但是当 Sonar 插件尝试重新运行测试时,它们都失败并出现以下错误:
初始化错误(uk.co.card.gwt.retailpost.client.dialog.productmodify.CurrencyEditDialogTest)经过时间:0秒<<<错误!com.googlecode.gwt.test.exceptions.GwtTestException:在 com.googlecode.gwt.test 的 com.googlecode.gwt.test.internal.GwtFactory.(GwtFactory.java:113) 生成 gwt-test-utils 先决条件时出错。 internal.GwtFactory.initializeIfNeeded(GwtFactory.java:45) 在 com.googlecode.gwt.test.internal.junit.AbstractGwtRunner.(AbstractGwtRunner.java:30) 在 com.googlecode.gwt.test.GwtRunner.(GwtRunner.java: 19) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
查看来自 jenkins 的其余控制台输出和工作区目录,我找不到“com.google.gwt.core.ext.UnableToCompleteException:(请参阅以前的日志条目)”所指的日志文件。
有没有人遇到过类似的问题并且知道如何让 Sonar 成功运行 gwt-test-utils,或者至少知道何时查找异常中提到的先前日志条目。
编辑:经过进一步的实验,问题似乎是由 jacoco 引起的。尝试仅运行使用 jacoco 检测的单元测试(并且不涉及声纳)会导致相同的错误
**编辑:
来自 pom.xml 的示例
<build>
pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.2.201302030002</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<excludedGroups combine.self="override" />
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m ${jacoco.agent.argLine}</argLine>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<propertyName>jacoco.agent.argLine</propertyName>
<destFile>${sonar.jacoco.itReportPath}</destFile>
<append>true</append>
<excludes>
<exclude>*.osgi.*</exclude>
<exclude>*.apache.*</exclude>
<exclude>*.sourceforge.*</exclude>
<exclude>*.junit.*</exclude>
<!-- Test support code does not need to be covered -->
<exclude>uk.co.card.retailpost.clientintegration.utilities.*</exclude>
</excludes>
<classDumpDir>temp/classes</classDumpDir>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>