Manquant de l'Unité de la Couverture de Test, mais qui ont de l'Unité de la Statistique de Test

J'ai un Jenkins, Sonar de l'installation, avec un projet maven. Ce projet maven a un seul pom, mais en contient java, javascript, html, etc. Donc, pour sonar c'est un multi module de projet afin que je puisse obtenir les statistiques pour chaque partie.

Nous voulons aussi obtenir de l'analyse de couverture de code pour le projet, ce qui signifie que nous avons besoin pour exécuter les tests et les exporter avant le sonar de l'analyse (au moins de ce que j'ai recueillies sonar-runner ne peut pas faire ce type d'étude).

Donc, j'ai mon jenkins travail mis en place pour faire clean package que la première étape, puis nous nous ajouter la Invoquer Autonome Sonar Analyse comme la deuxième étape. Nous avons un sonar-project.propriétés fichier dans la racine du projet avec tous les différents paramètres. Ici, il est:

sonar.projectKey=Project
sonar.projectName=Project
sonar.projectVersion=0.2.0-SNAPSHOT
sonar.projectDescription=Super Project
sonar.modules=project-java,project-web,project-js
project-java.sonar.dynamicAnalysis=reuseReports
project-java.sonar.core.codeCoveragePlugin=jacoco
project-java.sonar.dynamicAnalysis=reuseReports
project-java.sonar.junit.reportsPath=target/surefire-reports
project-java.sonar.jacoco.reportPath=target/coverage-reports/jacoco-ut.exec
project-java.sonar.projectName=project-java
project-java.sonar.language=java
project-java.sonar.projectBaseDir=.
project-java.sonar.sources=src/main/java
project-java.sonar.java.source=1.7
project-web.sonar.projectName=project-web
project-web.sonar.language=web
project-web.sonar.projectBaseDir=.
project-web.sonar.sources=src/main/webapp/partials
project-js.sonar.projectName=project-js
project-js.sonar.language=js
project-js.sonar.projectBaseDir=.
project-js.sonar.sources=src/main/webapp/js

Maintenant dans mon pompon, j'ai ajouté les éléments suivants (suivi tout le long de La création de Rapports de Couverture de Code pour les Tests Unitaires Et d'Intégration avec Le JaCoCo Plugin Maven pour la plupart):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.16</version>
    <configuration>
        <!-- Sets the VM argument line used when unit tests are run. -->
        <argLine>${surefireArgLine}</argLine>
        <!-- Skips unit tests if the value of skip.unit.tests property is true -->
        <!--<skipTests>${skip.unit.tests}</skipTests>-->
        <!-- Excludes integration tests when unit tests are run. -->
        <excludes>
            <exclude>**/IT*.java</exclude>
        </excludes>
    </configuration>
</plugin>   
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.6.4.201312101107</version>
    <executions>
        <!--
            Prepares the property pointing to the JaCoCo runtime agent which
            is passed as VM argument when Maven the Surefire plugin is executed.
        -->
         <execution>
             <id>pre-unit-test</id>
             <goals>
                 <goal>prepare-agent</goal>
             </goals>
             <configuration>
                 <!-- Sets the path to the file which contains the execution data. -->
                 <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
                 <!--
                    Sets the name of the property containing the settings
                    for JaCoCo runtime agent.
                -->
                 <propertyName>surefireArgLine</propertyName>
             </configuration>
         </execution>
         <!--
            Ensures that the code coverage report for unit tests is created after
            unit tests have been run.
        -->
         <execution>
             <id>post-unit-test</id>
             <phase>test</phase>
             <goals>
                 <goal>report</goal>
             </goals>
             <configuration>
                 <!-- Sets the path to the file which contains the execution data. -->
                 <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
                 <!-- Sets the output directory for the code coverage report. -->
                 <outputDirectory>${project.build.directory}/jacoco-ut</outputDirectory>
             </configuration>
         </execution>
    </executions>
</plugin>

Donc quand je fais des mvn clean package en local tout fonctionne, et je peux aller dans le répertoire cible, je vois les rapports qui ont été générés (je sais que sonar ne pas les utiliser, mais il a les informations de couverture de code dans celui-ci). Maintenant, lorsque le Sonar travail s'exécute tout semble bien fonctionner, mais les résultats sont manquants à l'Unité de la Couverture de Test numéros:

Manquant de l'Unité de la Couverture de Test, mais qui ont de l'Unité de la Statistique de Test

En regardant à travers les journaux de construction, j'ai trouvé:

14:39:43.929 INFO  - Sensor JaCoCoSensor...
14:39:43.932 INFO  - Project coverage is set to 0% since there is no directories with classes.
14:39:43.932 INFO  - Sensor JaCoCoSensor done: 3 ms

J'ai vu “Projet de couverture est fixé à 0%” – JaCoCo et Sonar dans Jenkins, et essayé les suggestions en vain. Je suppose qu'il me manque un autre paramètre ou avoir quelque chose de mal réglé.

InformationsquelleAutor Jacob Schoen | 2014-01-29