2016-06-14 5 views
1

Wenn ich den <reporting> Abschnitt in meinem pom wie folgt einrichten, bekomme ich nur den todsicheren Bericht, während der Pitest-Bericht fehlschlägt, weil es keine Eingabe finden kann .Maven Site Reporting gut für todsichere Tests, braucht extra Konfiguration für pitest MutationCoverage

<reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-project-info-reports-plugin</artifactId> 
     <version>2.9</version> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-report-plugin</artifactId> 
     <version>2.19.1</version> 
     </plugin> 
     <plugin> 
     <groupId>org.pitest</groupId> 
     <artifactId>pitest-maven</artifactId> 
     <version>1.1.10</version> 
     <configuration> 
      <targetClasses> 
      <param>pricingengine.*</param> 
      </targetClasses> 
      <targetTests> 
      <param>pricingengine.*</param> 
      </targetTests> 
     </configuration> 
     <reportSets> 
      <reportSet> 
      <reports> 
       <report>report</report> 
      </reports> 
      </reportSet> 
     </reportSets> 
     </plugin> 
    </plugins> 
    </reporting> 

Um die Eingabe in den pitest Bericht zu erhalten, so dass sie auf die Site-Berichte gibt, muss ich dies zuerst tun:

mvn compile test-compile org.pitest:pitest-maven:mutationCoverage

Muss ich jede dieser eingerichtet haben in die <build> Abschnitt als Plugins mit executions gebunden an die pre-site Phase, um dies zu geschehen? Oder gibt es eine einfachere Lösung mit einem anderen Plugin, das mir nicht bekannt ist?

+0

Wie rufen Sie die Site-Generation auf? nur 'mvn site'? –

+0

@ GeraldMücke Ja genau. Es könnte auf einem CI-Server-Slave laufen, wo sonst nichts ist, eine völlig leere Umgebung. – Adam

Antwort

1

Das maven-todefire-report-plugin gibt jedoch explizit an, dass es das Ziel test des Standardlebenszyklus aufruft. Das Pitest-Plugin funktioniert nicht. Also ja, du musst das Pitest-Maven-Plugin zum Build-Abschnitt hinzufügen und es an eine Lebenszyklusphase binden, d. H. pre-site. Ich würde die Verwendung des Website-Lebenszyklus für diesen Zweck nicht empfehlen, da es nicht für lange laufende Analyseaufgaben vorgesehen ist, aber das liegt an Ihnen.

So ist die Build-Reihenfolge ist:

  • Build Lifecycle
    • build das Modul (kompilieren Phase)
    • den Test (Testphase) laufen
    • die Mutation Abdeckung führen (dh in verifizieren Phase)
  • Standortlebenszyklus
    • Vor-Ort (mutationCoverage);
    • Berichte generieren
    • veröffentlichen Berichte
    • ...

Ich würde vorschlagen, ein Profil zu verwenden, so wird die Mutation Test nicht auf jedem Build laufen und Sie können es aktivieren, wenn nötig (zB mvn site-P pit)

<profile> 
    <id>pit</id> 
    <build> 
    <plugins> 
     <plugin> 
      <groupId>org.pitest</groupId> 
      <artifactId>pitest-maven</artifactId> 
      <configuration> 
       <targetClasses> 
        <param>pricingengine.*</param> 
       </targetClasses> 
       <targetTests> 
        <param>pricingengine.*</param> 
       </targetTests> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>mutationCoverage</goal> 
        </goals> 
        <phase>pre-site</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    </build> 
</profile> 
+0

Ich habe es tatsächlich an die Pre-Site-Phase gebunden, weil der Site-Lebenszyklus der ist, den ich wirklich brauche. Im Idealfall möchte ich den Lebenszyklus der Website mit dem Deploy/Release-Lebenszyklus verbinden, aber das ist eine andere Geschichte. – Adam

+0

Aber das ergibt keinen Sinn, "der Site Lifecycle übernimmt die Erstellung der Site-Dokumentation Ihres Projekts", nicht für die Durchführung von Analyseaufgaben. Natürlich könntest du es so machen, aber du solltest nicht. Bei Mutationstests geht es nicht um das Generieren von Berichten, sondern darum, Lücken in Ihrer Testsuite zu finden. –

+0

Fakt ist, dass das Pitest-Maven-Reporting-Plugin diese Testausgabe benötigt, weil es es selbst nicht erzeugt. Das todsichere Reporting-Plugin ruft jedoch die Tests compile, test-compile und todsichere Tests auf. Ich muss das für das Pitest-Plugin nachahmen. – Adam

Verwandte Themen