JaCoCo-SonarQube - aucune information sur la couverture par test
J'utilise JaCoCo pour la couverture du Code. Les rapports de test unitaires sont créés avec junit et ils sont importés correctement, de sorte que les informations de test unitaires sont affichées correctement. problème j'ai le message d'erreur: aucune information sur la couverture par test. et la couverture du code est égale à 0% pour les tests unitaires, les tests d'intégration et la couverture globale. J'ai vérifié toutes les informations requises dans le projet sonar.des propriétés comme binaire, src, tests etc.
j'utilise:
- SonarQube 4.5.1
- SonarRunner 2.4
- MySQL
- junit 4.1.1
- jacoco 0.7.2
Le jacoco.exec est situé dans un fichier /cible dans le répertoire de base du projet.
en suivant vous pouvez voir le sonar-projet.propriété: De mon point de vue, toutes les voies nécessaires sont tracées correctement. (i.e. binaire, src, tests)
Comma-separated paths to directories with sources (required)
sonar.sources=src
compiled code
sonar.java.binaries=class
source code of unit tests
sonar.tests=test/src
Comma-separated paths to files with third-party libraries (JAR files in the case of Java)
sonar.java.libraries=jar
Language
sonar.language=java
Encoding of the source files
sonar.sourceEncoding=UTF-8
Additional parameters
sonar.my.property=value
Set Project Base
sonar.projectBaseDir=C:/snapshots/steffen_latest/software/java
Tells SonarQube to reuse existing reports for unit tests execution and coverage reports
sonar.dynamicAnalysis=reuseReports
JUnit path
sonar.surefire.reportsPath=test/report/junit
Tells SonarQube where the unit tests execution reports are
sonar.junit.reportsPath=test/report/junit
Tells SonarQube that the code coverage tool by unit tests is JaCoCo
sonar.java.coveragePlugin=jacoco
Import JaCoCo code coverage report.
Tells SonarQube where the unit tests code coverage report is
Unit Tests Coverage
sonar.jacoco.reportPath=target/jacoco.exec
Tells SonarQube where the integration tests code coverage report is
sonar.jacoco.itReportPath=target/it-jacoco.exec
C'est la fichier d'enregistrement de sonar-runner:
13:56:05.883 INFO - Sensor SurefireSensor...
13:56:05.883 INFO - parsing C:worksnapshotssteffen_latestsoftwarejavatestreportjunit
13:56:06.149 INFO - Sensor SurefireSensor done: 266 ms
13:56:06.149 INFO - Sensor JaCoCoItSensor...
13:56:06.195 INFO - Analysing C:worksnapshotssteffen_latestsoftwarejavatargetit-jacoco.exec
13:56:06.726 INFO - **No information about coverage per test**.
13:56:06.726 INFO - Sensor JaCoCoItSensor done: 577 ms
13:56:06.726 INFO - Sensor JaCoCoOverallSensor...
13:56:06.851 INFO - Analysing C:worksnapshotssteffen_latestsoftwarejava.sonarjacoco-overall.exec
13:56:07.178 INFO - **No information about coverage per test**.
13:56:07.178 INFO - Sensor JaCoCoOverallSensor done: 452 ms
13:56:07.178 INFO - Sensor JaCoCoSensor...
13:56:07.209 INFO - Analysing C:worksnapshotssteffen_latestor_basesoftwarejavatargetjacoco.exec
13:56:07.521 INFO - **No information about coverage per test**.
13:56:07.521 INFO - Sensor JaCoCoSensor done: 343 ms
13:56:07.521 INFO - Sensor CPD Sensor (wrapped)...
13:56:07.521 INFO - JavaCpdEngine is used for java
13:56:07.521 INFO - Cross-project analysis disabled
13:56:09.019 INFO - Sensor CPD Sensor (wrapped) done: 1498 ms
13:56:09.144 INFO - Execute decorators...
13:56:16.166 INFO - Store results in database
quelqu'un pourrait-il me donner un conseil quel pourrait être le problème? Car je ne sais pas quel est le problème... Je travaille sur cette question depuis quelques jours et je ne sais vraiment pas quoi faire..
je vous Remercie à l'avance.
5 réponses
Avez-vous essayé d'utiliser le prepare-agent
?
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install
conseils:
si votre projet utilise déjà l'argLine pour configurer le surefire-maven-plugin, assurez-vous qu'argLine soit défini comme une propriété, plutôt que comme une partie de la configuration du plugin."
Avec cette configuration Maven je peux voir la couverture par données d'essai.
Vous devez configurer sonar-jacoco-auditeurs à obtenir une couverture par test.
s'il vous Plaît être conscient que c'est déconseillé par sonar: "cette fonctionnalité est dépréciée au niveau du SonarQube et ne sera plus améliorée/entretenue."
<skipTests>false</skipTests>
<!--Jacoco settings -->
<jacoco.haltOnFailure>false</jacoco.haltOnFailure>
<jacoco.skip>false</jacoco.skip>
<!-- sonar JACOCO properties -->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPaths>${project.reporting.outputDirectory}/jacoco-ut.exec</sonar.jacoco.reportPaths>
<sonar.language>java</sonar.language>
<!-- Added for Jacoco -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>org.sonar.java.jacoco.JUnitListener</value>
</property>
</properties>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<configuration>
<destFile>${sonar.jacoco.reportPaths}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.agent</artifactId>
<version>0.8.1</version>
<classifier>runtime</classifier>
</dependency>
<dependency>
<groupId>org.codehaus.sonar-plugins.java</groupId>
<artifactId>sonar-jacoco-listeners</artifactId>
<version>1.2</version>
<scope>test</scope>
</dependency>
dans mon cas, les commandes ci-dessous fonctionnent.
mvn clean org.jacoco:jacoco-maven-plugin:0.7.3.201502191951:prepare-agent install
mvn sonar:sonar
Pour vérifier la couverture de code: Démarrer SonarQube serveur -> Exécuter deux commandes ci-dessus l'un après l'autre et vous verrez la couverture de code dans Client SonarQube.
POUR INFORMATION: Mon SonarQube Version-5.1.2. Vous pouvez télécharger la dernière version de SonarQube Download
J'utilise Jun aussi bien et dans mon cas le problème était d'avoir la dépendance de TestNG dans ma pom.XML. Après avoir supprimé cette dépendance inutile, tout a commencé à fonctionner comme prévu.
assurez-vous de diviser la compilation et l'analyse en deux étapes de compilation différentes:
mvn clean install
mvn sonar:sonar