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.