Gibt es einen ordentlichen HTML Junit Bericht Plugin für Maven?
Frage
Ich finde die surefire-report
Plug-in sehr ungeeignet meinen Arbeitsstil. Ich reinige das Projekt die ganze Zeit und ich will nicht, 5 min verbringen den ganzen Ort jedes Mal wenn ich Testbericht in meinem Browser aussehen wollen neu zu erstellen.
Wenn ich mvn surefire-report:report-only
Typ, der erzeugte Bericht ist zu hässlich und kaum lesbar.
Was ich suche ist so etwas wie JUnitReport Ameise Aufgabe. Gibt es eine Verfügung da draußen schon?
Lösung
Tatsächlich bei jedem Build die gesamte Website zu erzeugen ist eindeutig keine Option. Aber das Problem ist, dass mvn surefire-report:report-only
nicht schaffen, die die CSS / *. CSS-Dateien, damit das hässliche Ergebnis. Dies wird angemeldet SURE-616 (Das bedeutet nicht, etwas passiert, obwohl) . Ich persönlich keine HTML-Berichte verwenden, so viel, damit ich damit leben kann, aber das ist keine gute Antwort, so ist hier eine Abhilfe auf der Grundlage der Ant-Task (* seufz *):
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>test-reports</id>
<phase>test</phase>
<configuration>
<tasks>
<junitreport todir="target/surefire-reports">
<fileset dir="target/surefire-reports">
<include name="**/*.xml"/>
</fileset>
<report format="noframes" todir="target/surefire-reports"/>
</junitreport>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-junit</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
</plugin>
Update: Meine erste Idee war, das Maven Plugin AntRun "on demand" ausführen, um die Berichte zu erstellen ... aber das ist nicht das, was ich geschrieben, ich gebunden an die test
Phase ... aber ich glaube nicht, über den Fall der fehlgeschlagenen Tests (die die Build stoppen würden und verhindern, dass die Ausführung der AntRun Plugin). Also, entweder:
-
nicht binden die AntRun Plugin an die
test
Phase bewegen sich die Konfiguration außerhalb desexecution
und Callmvn antrun:run
auf der Kommandozeile, die Berichte zu generieren, wenn wollte. -
oder verwenden Sie die
testFailureIgnore
Option der mojo Test und setzen sie sich auf true in der todsicheren Plugin-Konfiguration:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin>
-
oder setzen Sie diesen Ausdruck in der Befehlszeile der Parameter -D mit:
$ mvn test -Dmaven.test.failure.ignore=true
ich denke, dass Option 1 ist die beste Option, die Sie nicht unbedingt die Berichte generieren möchten (vor allem, wenn der Test bestanden) und erzeugen sie kann systematisch die Build auf langfristig verlangsamen. Ich würde erzeugen sie "on demand".
Andere Tipps
Das ist, was ich tue:
# Run tests and generate .xml reports
mvn test
# Convert .xml reports into .html report, but without the CSS or images
mvn surefire-report:report-only
# Put the CSS and images where they need to be without the rest of the
# time-consuming stuff
mvn site -DgenerateReports=false
zum Ziel / site / todsichere-report.html für den Bericht.
Nach Tests durchgeführt, der Rest der beiden laufen in etwa 3,5 Sekunden für mich.
Ich hoffe, das hilft. Genießen Sie!
Danke für Pascal, ich habe eine bessere Lösung zu tun, was fand ich tun möchte:
<plugin>
<!-- Extended Maven antrun plugin -->
<!-- https://maven-antrun-extended-plugin.dev.java.net/ -->
<groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
<artifactId>maven-antrun-extended-plugin</artifactId>
<executions>
<execution>
<id>test-reports</id>
<phase>test</phase>
<configuration>
<tasks>
<junitreport todir="target/surefire-reports">
<fileset dir="target/surefire-reports">
<include name="**/*.xml"/>
</fileset>
<report format="noframes" todir="target/surefire-reports"/>
</junitreport>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-junit</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-trax</artifactId>
<version>1.8.0</version>
</dependency>
</dependencies>
</plugin>
Diese Version verwendet eine neuere Version von Ameise und am besten von allen. Allerdings habe ich noch nicht gefunden, einen Weg, um einen Prüfbericht zu erzeugen, wenn Tests fehlschlagen. Wie soll ich das tun?
Hier ist, wie ich tat es das Ziel, mit Website maven-todsichere: Bericht :
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.16</version>
<configuration>
<showSuccess>false</showSuccess>
<outputDirectory>${basedir}/target/surefire-reports</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
<configuration>
<outputDirectory>${basedir}/target/surefire-reports</outputDirectory>
</configuration>
</plugin>
</plugins>
</reporting>
</project>
Sie können -Dmaven.test.failure.ignore=true
stellen Sie den Prüfbericht zu erzeugen, wenn Tests fehlschlagen.
Erstellen Sie eine neue Maven Lauf-Konfiguration und mit Ziel =>
surefire-report:report site -DgenerateReports=false
Das kann man helfen, eine bessere Berichtansicht mit CSS haben.
Führen Sie den folgenden Befehl
mvn clean install surefire-report:report
Sie können den Bericht in dem unten angegebenen Verzeichnis
finden{basedir}/target/site/surefire-report.html
Für weitere Details siehe die folgenden Link
http://maven.apache.org/surefire /maven-surefire-report-plugin/usage.html