2016-09-12 36 views

cevap

10

JUnit Platform Gradle Plugin, JUnit 4 stil XML test raporları oluşturur.

Bu XML dosyaları, varsayılan olarak build/test-results/junit-platform'a verilmektedir.

Yapı sunucunuz JUnit 4 stil XML raporlarını nasıl ayrıştırılacağını bilirse, bu dizindeki XML dosyalarına işaret edebilir ve yapı sunucusunun sizin için HTML raporunu oluşturmasına izin verebilirsiniz. GradlejunitPlatformTest görev aracılığıyla çalıştırmak için testler için bir HTML raporu oluşturmak eğer soruyorsun eğer

Ancak, daha sonra cevap "Ne yazık ki hayır" dır. Bunun nedeni, standart Gradle test görevinin yalnızca kendi "ikili" rapor biçimine dayalı HTML raporları oluşturmasıdır. junitPlatformTest görevi, Gradle'ın ikili biçiminde rapor üretmediğinden, Gradle'ın kendisi JUnit Platform testleri için HTML raporları oluşturamaz. Bununla birlikte, bununla birlikte, etrafta bir çalışma vardır: Gradle yapınızdaki Ant'i kullanabilirsiniz. Karınca'nın, JUnit 4 tabanlı XML raporlarını toplamak ve bu toplu raporlardan bir HTML raporu oluşturmak için bir görevi vardır. Çıktı çok modern değil, ama en azından insan tarafından okunabilir. Dezavantajı, varsayılan XSLT stil sayfasının JUnit Platformu üzerinden yürütülen testler için test sınıfı isimlerini göstermemesidir.

Her durumda Ant'in JUnitReport görevini Gradle'da aşağıdaki gibi yapılandırabilirsiniz.

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' 
} 

Sonra gradle check yürütme build/test-reports/index.html bir HTML raporu oluşturur.

Selamlar,

Sam (Çekirdek JUnit 5 committer)

+0

Yani, eğer doğru anlıyorsam, bu JUnit4 ve JUnit5 arasındaki değişikliklerden kaynaklanıyor, değil mi? –

+0

Evet. JUnit Platformu ("JUnit 5" in bir parçası) JUnit 4'ten daha fazla raporlama bilgisi sunar ve bu nedenle Gradle (JUnit 4'e dayanan) yerleşik test altyapısı ile eşleşmez. –

+1

Gradle ekibinden resmi JUnit Platform desteğiyle ilgili güncellemeler için aşağıdaki sorunu _watch_'da bulabilirsiniz: https://github.com/gradle/gradle/issues/828 –

-1

Evet, Jacoco eklentisini kullanabilirsiniz.

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" 
    } 
} 

Selamlar: Burada

bir örnektir.

+0

Ama bu kod parçası JUnit 4.x içindir –

+0

Jacoco, bir test başarı raporundan farklı olarak bir kapsam raporu oluşturur! –