2016-09-12 14 views

Antwort

10

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)

+0

Also, wenn ich es richtig verstehe, ist dies auf Änderungen zwischen JUnit4 und JUnit5, oder? –

+0

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). –

+1

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 –

-1

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.

+0

Nun, das ist Codefragment für JUnit 4.x. –

+0

Jacoco erstellt einen Abdeckungsbericht, der sich von einem Test-Erfolgsbericht unterscheidet! –

Verwandte Themen