2013-09-25 14 views
6

Hat jemand in der Lage gewesen, Unit-Testberichte über JMockit- und Powermock-Komponententests zu erhalten, die in JaCoCo von Maven Build funktionieren?Testabdeckung für Powermock- und JMockit-Komponententests

Ich habe ein bestehendes Test-Set von Powermock-Unit-Tests, die ich schrittweise zu JMockit migrieren möchte. Aber ich muss in der Lage sein, die Testabdeckung aller Komponententests in einem Bericht zu sehen, vorzugsweise in Sonar.

Ich habe JMockit und Powermock Tests laufen zusammen mit Surefire/JaCoCo, indem Sie JaCoCo in den "Offline" -Modus (sonst hatte ich ein Problem, wo einer der Agenten wurde nicht am Ende der Tests beendet und dann MVN sauber konnte nicht die generierte Ziel \ todsichere \ surffireboooter2967126910681005991.jar auf den nächsten Lauf) löschen. Für die JMockit-Tests wurde jedoch keine Abdeckung generiert.

Bitte posten Sie einige Auszüge von Ihrem Pom, wenn Sie dies funktioniert haben. Diese

ist, was mein pom aussieht (beachten Sie todsichere Plugin mit reuseForks congigured ist = false PermGen Speicherleck in PowerMock, dies ist einer der Hauptgründe zu JMockit migrieren Umgehung)

 <profile> 
     <!-- use this profile to perform Sonar analysis --> 
     <id>sonar</id> 
     <properties> 
      <sonar.language>java</sonar.language> 
      <!-- Tells Sonar to use the generated test coverage report --> 
      <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
      <!-- Tells Sonar to use JaCoCo as the code coverage tool --> 
      <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
      <sonar.java.codeCoveragePlugin>jacoco</sonar.java.codeCoveragePlugin> 
     </properties> 
     <build> 
      <plugins> 
       <!-- surefire (junit) plugin config with JaCoCo listener --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.16</version> 
        <configuration> 
         <!-- note: use single JVM to append to JaCoCo coverage file --> 
         <forkCount>1</forkCount> 
         <reuseForks>false</reuseForks> 
         <argLine>-XX:MaxPermSize=256m </argLine> 
         <systemPropertyVariables> 
          <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile> 
         </systemPropertyVariables> 
        </configuration> 
       </plugin> 

       <!-- JaCoCo (Sonar) plugin config--> 
       <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <version>0.6.3.201306030806</version> 
        <executions> 
         <execution> 
          <id>instrument</id> 
          <phase>process-classes</phase> 
          <goals> 
           <goal>instrument</goal> 
          </goals> 
         </execution> 
         <execution> 
          <id>restore</id> 
          <phase>site</phase> 
          <goals> 
           <goal>restore-instrumented-classes</goal> 
           <goal>report</goal> 
          </goals> 
         </execution> 
         <execution> 
          <id>check</id> 
          <goals> 
           <goal>check</goal> 
          </goals> 
          <configuration> 
           <rules> 
            <rule> 
             <element>BUNDLE</element> 
             <limits> 
              <limit> 
               <counter>COMPLEXITY</counter> 
               <value>COVEREDRATIO</value> 
               <minimum>0.0</minimum> 
              </limit> 
             </limits> 
            </rule> 
           </rules> 
          </configuration> 
         </execution> 
        </executions> 
        <configuration> 
         <append>true</append> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

Antwort

0

Entweder instrumentierte Klassen wurden nach nicht-instrumentierten auf Klassenpfad übergeben oder jacoco agent.jar wurde nicht zum Test-Klassenpfad hinzugefügt.

Um zu überprüfen, beide posibilities überprüfen, wo Sie Klassen, führen Sie mvn mit -X-Flag und überprüfen Classpath für die Testausführung instrumentiert haben (um zu sehen, um von Classpath Elemente und wenn jacoco Mittel auf Classpath.)