Ausführen von code coverage mit Cobertura und Jacoco
Ich habe ein bisschen ein problem, code-coverage-reports für Integration Tests und Unit-Tests in Sonar für eine Maven-Plugin-Projekt (mit invoker-plugin für die integration-tests).
Kann ich nicht verwenden Sie die Standard-Jacoco-coverage-tool für die unit-tests, wie Sie diese verwenden, Powermock, die Ergebnisse in 0% Abdeckung für Klassen benutzen. Auf der anderen Seite, ich kann nicht finden, eine zuverlässige Möglichkeit, um Ergebnisse zu erhalten für das Groovy-basierte integration tests ohne Verwendung von Jacoco.
So, was ich brauchen, ist für Cobertura zu produzieren, ein Unit-Test-Bericht, Jacoco, um die Erstellung eines Integration Test-Bericht, und für Sonar Lesen zu können, die viel.
Versuchte ich mit dem Beispiel hier https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/maven-invoker-plugin-example aber die Beseitigung der Hinrichtungen an die test-phase, aber ich bekomme dann ein unit-test-coverage " - " in Sonar. Ich denke, der Grund dafür ist, dass man diese Methode funktioniert, muss ich speicify Jacoco als die core-coverage-tool für Sonar.
Irgendwelche Ideen auf eine Weise, die Sie diese Runde? Meine pom.xml folgt:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.acme.myproj.plugins</groupId>
<artifactId>slice2java-maven-plugin</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<name>Slice2Java Maven Plugin</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<sonar.exclusions>**/generated*/*.java</sonar.exclusions>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.itReportPath>${project.basedir}/target/jacoco-it.exec</sonar.jacoco.itReportPath>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>1.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.2</version>
<configuration>
<goalPrefix>slice2java</goalPrefix>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
<execution>
<id>help-goal</id>
<goals>
<goal>helpmojo</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>run-its</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<version>1.8</version>
<configuration>
<debug>true</debug>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
<postBuildHookScript>verify</postBuildHookScript>
<localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
<settingsFile>src/it/settings.xml</settingsFile>
<goals>
<goal>clean</goal>
<goal>test-compile</goal>
</goals>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>install</goal>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.5.3.201107060350</version>
<configuration>
<includes>com.acme.*</includes>
</configuration>
<executions>
<execution>
<id>pre-integration-test</id>
<phase>pre-integration-test</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco-it.exec</destFile>
<propertyName>invoker.mavenOpts</propertyName>
</configuration>
</execution>
<execution>
<id>post-integration-test</id>
<phase>post-integration-test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.build.directory}/jacoco-it.exec</dataFile>
<outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
InformationsquelleAutor RCross | 2013-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da hast du konfigurieren, die sonar als
Bedeutet dies, dass Sie sagen, sonar Wiederverwendung die vorhandenen Berichts von sonar.jacoco.itReportPath. Wenn es keine vorhandenen Bericht, es gibt keine Abdeckung.
Im Mai Fall, ich benutze die cobertura und Wiederverwendung seinem Bericht aus maven-site-generation. wie die folgende Konfiguration Eigenschaften: -
Ich kann die Wiederverwendung vor, indem mithilfe des folgenden Befehls :-
Kann ich reproduzieren Sie Ihr Problem, indem Sie den folgenden Befehl ein :-
Die Abdeckung ist 0%. Da es keine vorhandenen Bericht an die Bericht-Pfad.
Dann stellen Sie bitte sicher, dass es einen Bericht mit dem Namen "jacoco-t.exec", wie angegeben, vor der Ausführung der sonar.
Da bin ich nicht vertraut mit der JaCoCo und nicht weiß, welche maven-phase erzeugt, dass der report-Datei. Ich würde vorschlagen, den Befehl auszuführen, wie die folgenden:-
oder
oder die gleiche wie meine
Ich hoffe das kann helfen.
Grüße,
Charlee Ch.
InformationsquelleAutor Charlee Chitsuk