J'essaie d'obtenir un rapport de couverture de code pour les tests d'intégration. Jacoco maven plugin est capable de donner la couverture de code pour les tests unitaires, mais donnant une couverture de 0% pour les tests d'intégration. Les tests d'intégration atteignent les points de terminaison api restants de l'application, qui a été déployée dans tomcat.Jacoco Maven instrumentation hors ligne - Tomcat
Mon plugin jacoco de maven & Le plugin surefire ressemble à ceci.
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>prepare-agent-integration</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>integration-test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.build.directory}/target/jacoco-it.exec</dataFile>
<outputDirectory>${project.build.directory}/target/jacoco-ut</outputDirectory>
</configuration>
</execution>
</executions>
<configuration>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<!-- <skip>true</skip> -->
<!-- <systemPropertyVariables> <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables> -->
</configuration>
<!-- <configuration> <skip>true</skip> </configuration> -->
<executions>
<execution>
<id>unit-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<!-- Never skip running the tests when the test phase is invoked -->
<!-- <skip>true</skip> -->
<argLine>@{argLine}
-javaagent:c:\\iat\\mavenrepository\\org\\jacoco\\org.jacoco.agent\\0.7.10-SNAPSHOT\\org.jacoco.agent-0.7.10-SNAPSHOT-runtime.jar=destfile=C:\\Users\\dmahapat\\Workspaces\\MyEclipse
2016 CI\\JaxRsApp\\target\\jacoco.exec</argLine>
<includes>
<include>**/*UnitTest.java</include>
</includes>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<!-- Never skip running the tests when the integration-test phase
is invoked -->
<!-- argLine>-javaagent:$WORKSPACE/target/lib/jacoco-agent-0.7.9.jar=includes=*,destfile=*/jacoco-coverage.exec,append=false</argLine -->
<skip>false</skip>
<argLine>@{argLine}
-javaagent:c:\\iat\\mavenrepository\\org\\jacoco\\org.jacoco.agent\\0.7.10-SNAPSHOT\\org.jacoco.agent-0.7.10-SNAPSHOT-runtime.jar=destfile=C:\\Users\\dmahapat\\Workspaces\\MyEclipse
2016 CI\\JaxRsApp\\target\\jacoco-it.exec
</argLine>
<includes>
<include>**/*IntegrationTest.java</include>
</includes>
<excludes>
<exclude>**/*UnitTest.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
J'exécute des tests unitaires en phase de test & tests d'intégration en phase de test d'intégration. La dernière erreur que je reçois est «Ignorer l'exécution de JaCoCo en raison d'un fichier de données d'exécution manquant».
Ai-je besoin de commencer tomcat en fournissant argument suivant -javaagent: c: \\ IAT \\ mavenrepository \\ org \\ \\ jacoco org. jacoco.agent \\ 0.7.10-SNAPSHOT \\ org.jacoco.agent-0.7.10-SNAPSHOT-runtime.jar = destfile = C: \\ Utilisateurs \\ dmahapat \\ Espaces de travail \\ MyEclipse2016 CI \\ JaxRsApp \\ target \\ jacoco-it.exec –
Si vous utilisez Maven pour démarrer Tomcat, 'jacoco-maven-plugin' prépare cet argument pour vous, il vous suffit donc de le passer à Tomcat comme d'habitude Propriété Maven - '$ {argLine}'. – Godin
@debajyotimahapatro s'il vous plaît ne pas oublier de upvote utile et accepter + upvote réponses correctes pour être un bon utilisateur de ce site. – Godin