L'exécution de la couverture de code avec Cobertura et Jacoco
J'ai un peu de problème pour obtenir des rapports de couverture de code pour les Tests d'Intégration et Tests Unitaires dans Sonar pour un Plugin Maven du projet (qui utilise invocateur plugin pour les tests d'intégration).
Je ne peux pas utiliser la valeur par défaut Jacoco outil de couverture pour les tests unitaires, car ils utilisent Powermock, ce qui donne 0% de couverture pour les classes à l'aide que. D'autre part, je ne peux pas trouver un moyen fiable pour obtenir des résultats pour le Groovy à base de tests d'intégration sans l'aide de Jacoco.
Donc ce que j'ai besoin d'une Couverture pour produire une Unité de rapport de Test, Jacoco pour produire une Intégration rapport d'Essai, et pour le Sonar, pour être en mesure de lire le lot.
J'ai essayé en utilisant l'exemple ici https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/maven-invoker-plugin-example mais en éliminant les exécutions lié à la phase de test, mais je puis faire un test de l'unité de la couverture de " - " dans Sonar. Je pense que la raison pour cela est que, pour obtenir cette méthode de travail, j'ai besoin de speicify Jacoco comme le noyau de la couverture de l'outil Sonar.
Toutes les idées sur un chemin autour de cela? Mon pom.xml suit:
<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>
OriginalL'auteur RCross | 2013-02-28
Vous devez vous connecter pour publier un commentaire.
Depuis que vous avez configurer le sonar comme
Cela signifie que vous dites sonar à réutilisation le rapport existant de sonar.jacoco.itReportPath. Si il n'y a aucun rapport, il n'y a aucune couverture.
En mai, j'utilise la cobertura et de réutiliser son rapport de maven site génération. comme les propriétés de configuration suivantes: -
Je peux obtenir la réutilisation par l'aide de la commande suivante :-
Je peux reproduire votre problème à l'aide de la commande suivante :-
La couverture est de 0%. Puisqu'il n'existe pas de rapport à la chemin d'accès du rapport.
Alors s'il vous plaît assurez-vous qu'il existe un rapport nommé "jacoco-t.exec" comme spécifié avant l'exécution de la sonar.
Depuis que je ne suis pas familier avec le JaCoCo et ne sais pas qui maven phase qui produit thae fichier de rapport. Je suggère d'exécuter la commande, comme suit:-
ou
ou la même que la mienne
J'espère que cela peut aider.
Ce qui concerne,
Charlee Ch.
OriginalL'auteur Charlee Chitsuk