JUnit testleri Gradle ile başlatıldığında bir HTML raporu oluşturma olanağı var mıdır? Herhangi bir ipucu veya yorum takdir edilmektedir.JUnit 5 testleri için bir HTML raporu nasıl oluşturulur?
cevap
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)
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.Ama bu kod parçası JUnit 4.x içindir –
Jacoco, bir test başarı raporundan farklı olarak bir kapsam raporu oluşturur! –
Yani, eğer doğru anlıyorsam, bu JUnit4 ve JUnit5 arasındaki değişikliklerden kaynaklanıyor, değil mi? –
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. –
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 –