Wir versuchen, aus einer Reihe von Komponententests, die mit gwt-test-utils geschrieben wurden, Deckungsberichte für unsere GWT-Anwendung zu erstellen. Das Projekt ist ein Multi-Modul Maven-Projekt. Wir verwenden das Sonar-Plugin auf Jenkins, um unsere Coverage- und Verletzungsinformationen zu generieren und zu sammeln.gwt-test-utils-Einheit schlägt fehl, wenn jacoco ausgeführt wird
Wenn die Baujobs all GWT Unit-Tests als Teil des normalen Build passieren laufen, aber wenn die Sonar-Plugin der Tests erneut auszuführen versucht sie alle mit dem folgenden Fehler fehlschlagen:
initializationError(uk.co.card.gwt.retailpost.client.dialog.productmodify.CurrencyEditDialogTest) Time elapsed: 0 sec <<< ERROR! com.googlecode.gwt.test.exceptions.GwtTestException: Error while generating gwt-test-utils prerequisites at com.googlecode.gwt.test.internal.GwtFactory.(GwtFactory.java:113) at com.googlecode.gwt.test.internal.GwtFactory.initializeIfNeeded(GwtFactory.java:45) at com.googlecode.gwt.test.internal.junit.AbstractGwtRunner.(AbstractGwtRunner.java:30) at com.googlecode.gwt.test.GwtRunner.(GwtRunner.java:19) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29) at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Caused by: com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries) at com.google.gwt.dev.cfg.ModuleDef.checkForSeedTypes(ModuleDef.java:559) at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:363) at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:354) at com.googlecode.gwt.test.internal.GwtFactory.createCompilationState(GwtFactory.java:151) at com.googlecode.gwt.test.internal.GwtFactory.(GwtFactory.java:106) ... 25 more
durch die Suche Rest der Konsole Ausgabe von Jenkins, und die Workspace-Verzeichnisse, kann ich nicht finden Sie die Protokolldatei, die die "com.google.gwt.core.ext.UnableToCompleteException: (siehe vorherige Protokolleinträge)" bezieht sich auf.
Hat jemand ein ähnliches Problem festgestellt und weiß, wie man Sonar dazu bringt, die gwt-test-utils erfolgreich auszuführen, oder zumindest eine Idee haben wird, nach den in der Ausnahme erwähnten vorherigen Protokolleinträgen zu suchen.
EDIT: Nach weiteren Experimenten scheint das Problem von Jacoco verursacht worden zu sein. nur die Unit-Tests instrumentiert mit jacoco (und ohne Sonar beteiligt) ergibt sich der gleiche Fehler versucht zu laufen
** EDIT:
Probe von 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>
Nach dem Debuggen ich entdecken, ist GwtRunner von MyGwtRunner außer Kraft setzen, dass Problem mit Maven + jacoco. Wenn Sie jacoco von eclipse (ecl emma plugin) ausführen, sehen Sie einen Code Coverage Report. –
Wir müssen den Job als Teil eines nächtlichen jenkins-Build-Jobs ausführen, der Sonar verwendet, um die sich daraus ergebenden Coverage-Statistiken zu melden. Irgendeine Idee, wie wir die Abdeckung erzeugen könnten, und sie dann in Maven/Sonar in dieser Einrichtung wiederverwenden? Die Anwendung ist in Netbeans gebaut, aufgrund von Problemen mit dem Org.apache.osgi-Framework in Eclipse. – user2075499