tests sonar metricas coverage sonarqube jacoco

metricas - JaCoCo-SonarQube-No hay información sobre la cobertura por prueba



sonar tests (5)

¿Has intentado usar el prepare-agent ?

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install

Además, si su cobertura sigue mostrando un 0%, es posible que deba seguir estos consejos :

Si su proyecto ya usa argLine para configurar el plugin surefire-maven, asegúrese de que argLine esté definida como una propiedad, en lugar de como parte de la configuración del plugin ".

Estoy usando JaCoCo para la cobertura de código. Los informes de prueba de unidad se crean con junit y se importan correctamente, de modo que la información de prueba de unidad se muestra correctamente. El problema es que recibo el mensaje de error: No hay información sobre la cobertura por prueba. y la cobertura del código muestra el valor 0% para las pruebas unitarias, las pruebas de integración y la cobertura general. Verifiqué toda la información requerida en el sonar-project.properties como binary, src, tests, etc.

Estoy usando:
- SonarQube 4.5.1
- SonarRunner 2.4
- MySQL
- Junit 4.1.1
- jacoco 0.7.2

El jacoco.exec se encuentra en un archivo / destino en el directorio base del proyecto.

A continuación puede ver el sonar-project.properties: Desde mi punto de vista, todas las rutas necesarias se configuran correctamente. (es decir, binario, src, pruebas)

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

Este es el archivo de registro de sonar-runner:

13:56:05.883 INFO - Sensor SurefireSensor... 13:56:05.883 INFO - parsing C:/work/snapshots/steffen_latest/software/java/test/report/junit 13:56:06.149 INFO - Sensor SurefireSensor done: 266 ms 13:56:06.149 INFO - Sensor JaCoCoItSensor... 13:56:06.195 INFO - Analysing C:/work/snapshots/steffen_latest/software/java/target/it-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:/work/snapshots/steffen_latest/software/java/.sonar/jacoco-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:/work/snapshots/steffen_latest/or_base/software/java/target/jacoco.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

¿Alguien podría darme un consejo cuál podría ser el problema? Ya que no sé cuál es el problema ... estoy trabajando en estos problemas desde hace unos días y realmente no sé qué hacer ...

Gracias de antemano.


Asegúrese de dividir la compilación y el análisis en dos pasos de compilación diferentes:

mvn clean install mvn sonar:sonar


Con esta configuración de Maven puedo ver la cobertura por datos de prueba.

Debe configurar los escuchas de sonar-jacoco para obtener cobertura por prueba.

Tenga en cuenta que el sonar está en desuso: "esta función está en desuso en el nivel de SonarQube y ya no recibirá más mejoras / mantenimiento".

<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>


En mi caso los siguientes comandos funcionan.

mvn clean org.jacoco:jacoco-maven-plugin:0.7.3.201502191951:prepare-agent install mvn sonar:sonar

Para verificar la cobertura del código: inicie el servidor de SonarQube -> Ejecutar sobre dos comandos uno tras otro y verá la cobertura del código en SonarQube Client .

Para tu información: Mi versión de SonarQube - 5.1.2. Puede descargar la última versión desde SonarQube Descargar


También uso JUnit y, en mi caso, el problema se debió a la dependencia de TestNG en mi pom.xml. Después de eliminar esta dependencia innecesaria, todo comenzó a funcionar como se esperaba.