Gibt es bereits eine Möglichkeit, einen HTML-Bericht zu generieren, wenn JUnit-Tests über Gradle gestartet wurden? Jeder Hinweis oder Kommentar wird geschätzt.Wie erstelle ich einen HTML-Bericht für JUnit 5 Tests?
Antwort
Das JUnit Platform Gradle Plugin generiert JUnit 4 Style XML Testberichte.
Diese XML-Dateien werden standardmäßig an build/test-results/junit-platform
ausgegeben.
Wenn Ihr Build-Server weiß, wie JUnit 4-XML-Berichte analysiert werden sollen, können Sie einfach auf die XML-Dateien in diesem Verzeichnis verweisen und den Build-Server den HTML-Bericht für Sie generieren lassen.
Wenn Sie jedoch fragen, wenn Gradle kann einen HTML-Bericht für Ihre Tests über die junitPlatformTest
Task ausgeführt erzeugen, dann ist die Antwort „Nein, leider nicht.“ Der Grund dafür ist, dass die Standardaufgabe Gradle test
nur HTML-Berichte generiert, die auf dem eigenen proprietären "binären" Berichtsformat basieren. Da die Task junitPlatformTest
keine Berichte im Binärformat von Gradle generiert, kann Gradle selbst keine HTML-Berichte für JUnit Platform-Tests generieren.
Allerdings gibt es in der Tat eine Arbeit um: Sie können Ant innerhalb Ihrer Gradle Build verwenden. Ant hat eine Aufgabe, um JUnit 4-basierte XML-Berichte zu aggregieren und aus diesen aggregierten Berichten einen HTML-Bericht zu generieren. Die Ausgabe ist nicht sehr modern, aber es ist zumindest für Menschen lesbar. Der Nachteil ist, dass das XSLT-Standard-Stylesheet die Testklassennamen für Tests, die über die JUnit Platform ausgeführt werden, nicht anzeigt.
In jedem Fall können Sie Ant JUnitReport Aufgabe in Gradle wie folgt konfigurieren.
junitPlatform {
// configure as normal
}
configurations {
junitXmlToHtml
}
task generateHtmlTestReports << {
def reportsDir = new File(buildDir, 'test-reports')
reportsDir.mkdirs()
ant.taskdef(
name: 'junitReport',
classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator',
classpath: configurations.junitXmlToHtml.asPath
)
ant.junitReport(todir: "$buildDir/test-results/junit-platform", tofile: "aggregated-test-results.xml") {
fileset(dir: "$buildDir/test-results/junit-platform")
report(format: 'frames', todir: reportsDir)
}
}
afterEvaluate {
def junitPlatformTestTask = tasks.getByName('junitPlatformTest')
generateHtmlTestReports.dependsOn(junitPlatformTestTask)
check.dependsOn(generateHtmlTestReports)
}
dependencies {
// configure as normal ...
junitXmlToHtml 'org.apache.ant:ant-junit:1.9.7'
}
Dann gradle check
Ausführung wird ein HTML-Bericht in build/test-reports/index.html
erzeugen.
Grüße,
Sam (Kern JUnit 5 Committer)
Ja, Sie können das Jacoco-Plugin verwenden. Hier
ein Beispiel:
apply plugin: 'war' or apply plugin: 'java'
apply plugin: "jacoco"
test {
reports.junitXml.destination="build/test-results"
jacoco {
destinationFile = file("build/jacoco/jacoco.exec")
append=true
}
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
Grüße.
Nun, das ist Codefragment für JUnit 4.x. –
Jacoco erstellt einen Abdeckungsbericht, der sich von einem Test-Erfolgsbericht unterscheidet! –
- 1. Wie erstelle ich ausführlichere Ergebnismitteilungen für einen Jmeter Junit Sampler
- 2. Wie schreibe ich JUnit Tests?
- 3. Wie führe ich JUnit 5 @Tag Tests mit Ant aus?
- 4. JUnit Tests für AspectJ
- 5. Wie findet JUnit Tests?
- 6. In JUnit 5, wie Code vor allen Tests ausgeführt wird
- 7. Wie kann ich einen Toast in JUnit-Tests ignorieren?
- 8. Wie erstelle ich einen PDF-Bericht über die Junit-Testergebnisse?
- 9. Wie lade ich verschiedene Klassen für JUnit-Tests dynamisch?
- 10. Wie injiziere ich ServletContext für JUnit-Tests mit Spring?
- 11. Java: Wie mache ich JUnit Tests für falsche Variablen
- 12. Gradle Projekt läuft jUnit 5 Tests in IntelliJ
- 13. Eclipse JUnit 5 Unterstützung
- 14. JUNIT Tests void Methoden
- 15. todsichere ist nicht richtig erfasst Junit 5 Tests
- 16. In jQuery wie erstelle ich alle 5 Sekunden einen Alarm?
- 17. Datengetriebene Tests mit jUnit
- 18. Wie lege ich den Loglevel für einen JUnit Test fest?
- 19. Wie erstelle ich Tests in TFS 2015
- 20. Verschiedene Klassenlader für verschiedene JUnit-Tests verwenden?
- 21. NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor() in jUnit Tests für Android
- 22. Wie erstelle ich einen Alias für 'Fenster'?
- 23. Wie erstelle ich einen Metagrammar?
- 24. JUnit optional/erforderliche Tests
- 25. Keine Dagger2 generierte Dateien für JUnit Tests
- 26. Wie kann ich eine DataSource an einen InitialContext für JUnit-Tests binden?
- 27. Verschiedene parametrisierte Argumente für verschiedene Tests JUNIT
- 28. Warnung in JUnit Tests
- 29. Gruppieren von JUnit-Tests
- 30. Wie verwende ich Hamcrest mit JUnit 5, wenn JUnit 5 keine assertThat() -Funktion hat?
Also, wenn ich es richtig verstehe, ist dies auf Änderungen zwischen JUnit4 und JUnit5, oder? –
Ja. Die JUnit-Plattform (Teil von "JUnit 5") bietet mehr Reporting-Informationen als JUnit 4 und bildet daher nicht die integrierte Testinfrastruktur in Gradle ab (die auf JUnit 4 basiert). –
Sie können _watch_ das folgende Problem für Updates auf offiziellen JUnit Platform-Support vom Gradle-Team: https://github.com/gradle/gradle/issues/828 –