2016-06-02 12 views
0

Ich benutze die Maven-Surefire-Plugin-Version 2.17 mit Maven.maven-surefire-plugin, jacoco-maven-plugin zeige keine Abdeckung

I jacoco-Maven-Plugin bin mit meiner JUnit-Tests zu analysieren:

Mein jacoco Plugin in meinem pom.xml einrichten sieht wie folgt aus:

<plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.6.201602180812</version> 
      <executions> 
       <execution> 
        <id>agent-for-ut</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
        <configuration> 
         <destFile>${sonar.jacoco.reportPath}</destFile> 
         <append>true</append> 
        </configuration> 
       </execution> 
       <execution> 
        <id>post-unit-test</id> 
        <goals> 
         <goal>report</goal> 
        </goals> 
        <configuration> 
         <dataFile>${sonar.jacoco.reportPath}</dataFile> 
         <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

ich eine Klasse unter src haben/main/java/etwas/übertreffen, die wie folgt aussieht:

package something.excel; 

public class VDHTCStyle 
{ 
    public int doSomething() { 
     int i=0; 
     return i+7; 
    } 
} 

Meine Testklasse unter src/test/java/etwas/Excel sieht wie folgt aus:

package something.excel; 

import org.junit.Before; 
import org.junit.Test; 

import static org.junit.Assert.assertEquals; 

public class VDHTCStyleStyleTest 
{ 
    private VDHTCStyleStyle vDHTCStyleStyle; 

    @Before 
    public void setUp() 
    { 
     vDHTCStyleStyle = new VDHTCStyleStyle(); 
    } 

    @Test 
    public void shouldDoSomething() { 
     int something = vDHTCStyleStyle.doSomething(); 
     assertEquals(something, 7); 
    } 

} 

Als ich diese laufen mit

mvn clean install 

Ich sehe das in den Protokollen:

[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ xxxxx --- 
[INFO] Surefire report directory: /var/lib/jenkins/workspace/xxxx/modules/xx/target/surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running something.excel.VDHTCStyleTest 
|classnames | 2.2.3 | A simple utility for conditionally joining classNames together| 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec - in something.excel.VDHTCStyleTest 

Nun, wenn ich an der generierten jacoco-ut Report-Datei aussehen, ich so etwas wie dies sehen:

Wie ich es verstehe, denkt es keine der Linien, Anweisungen, Zweige oder Methoden w Er ist bedeckt.

Warum? Hilfe :)

Antwort

1

Das Problem scheint, dass Maven-todsichere-Plugin zu sein unvorhersehbar verhält, wenn zweimal in einem Multi-Modul-Projekt angegeben

Meine Eltern pom es in dem Build-Abschnitt hatte, und das Kind Modul pom hatte es auch im Build-Bereich. Aus diesem Grund schien es, die Tests auszuführen, aber die Abdeckung war immer 0 im untergeordneten Modul.

Der Fix war, Maven-Surefire-Plugin aus dem Kind-Modul Pom zu entfernen, und nur im Build-Abschnitt des Eltern Pom.

Problem sovlved.