2014-12-04 8 views
19

Sto utilizzando JaCoCo per la copertura del codice. I report Unit Test vengono creati con junit e vengono importati correttamente, in modo che le informazioni sul test dell'unità vengano visualizzate correttamente. Il problema è che viene visualizzato il messaggio di errore: Nessuna informazione sulla copertura per test. e la copertura del codice mostra il valore 0% per i test unitari, i test di integrazione e la copertura complessiva. ho controllato tutte le informazioni richieste nei sonar-project.properties come binario, src, test eccJaCoCo - SonarQube - Nessuna informazione sulla copertura per test

sto usando:
- SonarQube 4.5.1
- SonarRunner 2.4
- MySQL
- JUnit 4.1.1
- jacoco 0.7.2

jacoco.exec si trova in un file/destinazione nella directory di base del progetto.

Di seguito è possibile vedere il sonar-project.properties: Dal mio punto di vista tutti i percorsi necessari sono impostati correttamente. (cioè binari, src, test)

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 

Questo è il file di log da 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 

qualcuno potrebbe darmi un consiglio quello che potrebbe essere il problema? Dal momento che non so qual è il problema ... sto lavorando su questi problemi da qualche giorno e io davvero non so cosa fare ..

Grazie in anticipo.

+2

copertura per test è un'informazione sulla parte superiore della copertura. La copertura per test è l'informazione su quale test ha riguardato il file. (mentre la copertura ti informa solo su quali linee sono state coperte dai test). Quindi, ti preghiamo di chiarire la tua domanda sulla base di tali informazioni, poiché il messaggio "Nessuna informazione sulla copertura per test" solo ci informa che non hai usato alcun ascoltatore per scaricare sessioni jacoco tra ogni test. – benzonico

+0

Grazie per il suggerimento. Il problema era che non usavamo alcun ascoltatore per scaricare sessioni jacoco tra ogni test. – Stelos10

+1

Qualche possibilità di postare come l'hai configurato? Ho lo stesso problema –

risposta

2

Hai provato a utilizzare lo prepare-agent?

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

Inoltre, se la copertura continua che mostra 0%, potrebbe essere necessario seguire this advice:

Se il progetto utilizza già l'argLine per configurare l'infallibile-maven-plugin, essere sicuri che argLine definita come una proprietà, piuttosto che come parte della configurazione del plugin "

-3

Assicurati di dividere accumulo e l'analisi a due diverse fasi di compilazione:.

mvn clean install 

mvn sonar:sonar 
0

Nel mio caso, i comandi funzionano.

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

Per verificare la copertura del codice: Start Server SonarQube -> Esegui sopra due comandi uno dopo l'altro & vedrete copertura del codice a SonarQube Client.

SonarQube Code Coverage

FYI: mio SonarQube Versione - 5.1.2.È possibile scaricare l'ultima versione da SonarQube Download

0

Io uso JUnit e nel mio caso il problema era dovuto alla dipendenza TestNG nel mio pom.xml. Dopo aver rimosso questa dipendenza non necessaria, tutto ha iniziato a funzionare come previsto.