2016-03-24 7 views
2

Ich verwende Sonarqube als Ausgabe für die Testergebnisse, während Maven und Jacoco zum Testen der Testfälle.maven jacoco plugin erzeugt keinen Coverage-Bericht

Sonarqube Version 5.4 Maven Version 3.3.9 Jacoco Version 0.7

Das ist mein pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.sonarqube</groupId> 
    <artifactId>example-ut-maven-jacoco</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <name>Java :: UT Coverage with JaCoCo :: Maven</name> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <!-- Minimal supported version is 4.7 --> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>0.7.6.201602180812</version> 
    </dependency> 

    </dependencies> 

    <build> 
    <plugins> 
     <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> 
      <!-- 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> 
     </configuration> 
    </plugin> 
    </plugins> 
    </build> 



</project> 

ich auch diese link here folgenden bin aber für die Dateien, die ich bin mit dem diejenigen hier enter link description here.

Dieses, wie ich das Projekt zum Testen bauen

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

Die buiild erfolgreich zurückkehrt, aber es gibt keine Codeabdeckung erzeugt Ich habe dies auch durch localhost Sonarqube gehen: 9000/es zeigt 0,00% Codeabdeckung, aber die Unit Test werden alle als erfolgreich "es ist erfolgreich" dargestellt.

Haben Sie eine Idee, was zu diesem Problem führen könnte? Auch ich bin immer noch neu in all dem.

+0

Warum laufen 'mvn clean test' und' mvn clean verify' ... und 'mvn clean ... install'? Es wäre ausreichend, eine einzelne "mvn clean install" auszuführen und "mvn sonar: sonar" zu verwenden. – khmarbaise

+0

@khmarbaise Ich lese, dass Sie zuerst testen und verifizieren sollten? oder was sind nur die notwendigen Schritte, um das zu erreichen, was ich will? Ich habe alles versucht, was ich gelesen habe. – makingitwork

+0

Hallo, Welche Java-Version verwenden Sie? –

Antwort

2

Das Setup sieht aus meiner Sicht in Ordnung.

Sie haben den Standardnamen der Berichtsdatei geändert. Daher würde ich annehmen, dass Sie das auch dem Sonaranalysator mitteilen müssen.

Der Jacoco-Standard für Komponententests ist: ${project.build.directory}/jacoco.exec Das ist auch der Name Sonar wird versuchen, abzuholen.

Sie können einfach eine Eigenschaft den Speicherort für das Sonar-Analysator, um anzuzeigen:

<properties 
    <sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco-ut.exec</sonar.jacoco.reportPath> 
    ... 

Bitte überprüfen Sie, ob Ihre jacco Datei existiert und nicht leer - wenn so Sonar früher oder später abholen, sobald die Der Standort ist korrekt konfiguriert.

+0

Ich werde versuchen, das zu meinen Eigenschaften hinzufügen und sehen, ob es funktioniert :) – makingitwork

+1

Danke, es funktioniert! – makingitwork

Verwandte Themen