2015-10-06 3 views
9

Ich habe ein Projekt, wo ich Jacoco verwenden, um die Codeabdeckung zu berechnen. Ich verwende Maven-Konfiguration wie hier:Jenkins jacoco plugin leer Bericht

http://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/

Mit Jenkins, ich laufe "mvn saubere Test installieren". Er generiert den Bericht im Ordner/target/site/jacoco-ut /. Wenn ich die Datei index.html öffnen, sehe ich dies:

enter image description here

Aber wenn ich JaCoCo Deckungsbericht in jenkins Job öffnen, sehe ich:

enter image description here

Er sagt, dass jeder Testabdeckung 0% des Codes. Ich verstehe nicht, warum ich nicht das gleiche Ergebnis wie im HTML-Bericht habe.

 <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.5.201505241946</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.reporting.outputDirectory}/jacoco-ut</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.15</version> 
      <configuration> 
       <skip>true</skip> 
      </configuration> 
      <executions> 
       <execution> 
        <id>surefire-unit-tests</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <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. --> 
         <skip>false</skip> 
         <excludes> 
          <exclude>**/*IntegrationTests.java</exclude> 
         </excludes> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.15</version> 
      <executions> 
       <!-- 
        Ensures that both integration-test and verify goals of the Failsafe Maven 
        plugin are executed. 
       --> 
       <execution> 
        <id>integration-tests</id> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
        <configuration> 
         <!-- Sets the VM argument line used when integration tests are run. --> 
         <argLine>${failsafeArgLine}</argLine> 
         <!-- 
          Skips integration tests if the value of skip.integration.tests property 
          is true 
         --> 
         <skipTests>${skip.integration.tests}</skipTests> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Und meine jenkins Konfiguration:

enter image description here

Was ist mein Fehler?

Antwort

1

fand ich ein jenkins zu meinem Problem ähnliches Problem:

https://issues.jenkins-ci.org/browse/JENKINS-28652

Der Fehler von jacoco Version verursacht wird. Die Version 0.7.5.201505241946 ist abgehört. Ich wechsle für die Version 0.7.4.201502262128 und jetzt funktioniert es.

+0

OK, danke für Informationen –

0
Try to use in Jenkins Plugin : 
Path to exec files = **/**.exec 

und ich verwende diesen pom:

<jacoco.it.execution.data.file>${project.build.directory}/coverage-reports/jacoco-it.exec</jacoco.it.execution.data.file> 
    <jacoco.ut.execution.data.file>${project.build.directory}/coverage-reports/jacoco-ut.exec</jacoco.ut.execution.data.file> 

    <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>pre-integration-test</id> 
          <phase>pre-integration-test</phase> 
          <goals> 
           <goal>prepare-agent-integration</goal> 
          </goals> 
          <configuration> 
           <destFile>${jacoco.it.execution.data.file}</destFile> 
           <propertyName>failsafeArgLine</propertyName> 
          </configuration> 
         </execution> 
         <!-- Ensures that the code coverage report for integration tests after --> 
         <!-- integration tests have been run. --> 
         <execution> 
          <id>post-integration-test</id> 
          <phase>post-integration-test</phase> 
          <goals> 
           <goal>report-integration</goal> 
          </goals> 
          <configuration> 
           <dataFile>${jacoco.it.execution.data.file}</dataFile> 
           <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
+0

Ich habe das versucht, aber ich habe das gleiche Ergebnis. – YLombardi

+0

warum machst du: mvn sauber install test, du kannst juste tun: mvn sauber installieren –

+1

Ich mache eine "mvn sauber install test", weil das tutorial ich benutze sagt "Der Befehl mvn clean test führt Unit Tests und erstellt den Code Coverage Report für Komponententests zum Verzeichnis target/site/jacoco-ut ". – YLombardi

1

Ich hatte ähnliches Problem und es nur um die Aktualisierung der „jacoco-Maven-Plugin“ Version 0.7.7.201606060606 und „Maven-todsichere-Plugin“ Version 2.19.1

hoffen fixiert ich dies funktionieren wird für dich.