如何为JUnit 5测试创建HTML报告? [英] How to create an HTML report for JUnit 5 tests?

查看:863
本文介绍了如何为JUnit 5测试创建HTML报告?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当JUnit测试通过Gradle启动时,是否有可能生成HTML报告?

解决方案

更新



Gradle 4.6为 JUnit提供了内置支持平台 ,它允许您使用标准的Gradle test 任务运行JUnit Jupiter测试,该任务可立即生成HTML报告。






4.6之前的Gradle版本的答案

JUnit平台Gradle插件生成JUnit 4样式的XML测试报告。


$ b 这些XML文件输出到 build / test-results / junit-platform 默认情况下。

因此,如果您的构建服务器知道如何解析JUnit 4样式的XML报表,您可以将其指向XML文件该目录并让构建服务器为您生成HTML报告。



然而,如果您问是否 Gradle 可以通过 junitPlatformTest 任务为您的测试生成HTML报告,那么答案是不,不幸的是。原因是标准的Gradle test 任务只能根据自己专有的二进制报告格式生成HTML报告。由于 junitPlatformTest 任务不会以Gradle的二进制格式生成报告,因此Gradle本身无法为JUnit Platform测试生成HTML报告。



<尽管如此,事实上还有一个解决方法:您可以在您的Gradle构建中使用Ant。 Ant有一项任务,用于汇总基于JUnit 4的XML报告并从这些汇总报告生成HTML报告。输出不是很现代,但它至少是人类可读的。缺点是默认的XSLT样式表不显示通过JUnit平台运行的测试的测试类名称。



在任何情况下,您都可以配置Ant的

  junitPlatform {
//配置为正常
}

配置{
junitXmlToHtml
}

任务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(格式:'frames',todir:reportsDir)
}
}

afterEvaluate {
def junitPlatformTestTask = tasks.getByName('junitPlatformTest ')
generateHtmlTestReports.dependsOn(junitPlatformTestTask)
check.dependsOn(generateHtmlTestReports)
}

依赖项{
// configure as normal ...

junitXmlToHtml'org.apache.ant:ant-junit:1.9.7'
}

然后,执行 gradle check 会在 build / test-reports / index.html 中生成一个HTML报告。



问候,

山姆( Core JUnit 5提交者

Is there already a possibility to generate an HTML report when JUnit tests were started via Gradle? Any hint or comment is appreciated.

解决方案

UPDATE

Gradle 4.6 provides built-in support for the JUnit Platform which allows you to run JUnit Jupiter tests using the standard Gradle test task which generates HTML reports out of the box.


Answer for Gradle versions prior to 4.6

The JUnit Platform Gradle Plugin generates JUnit 4 style XML test reports.

These XML files are output to build/test-results/junit-platform by default.

So, if your build server knows how to parse JUnit 4 style XML reports, you can just point it to the XML files in that directory and let the build server generate the HTML report for you.

However, if you are asking if Gradle can generate an HTML report for your tests run via the junitPlatformTest task, then the answer is "No, unfortunately not." The reason is that the standard Gradle test task only generates HTML reports based on its own proprietary "binary" report format. Since the junitPlatformTest task does not generate reports in Gradle's binary format, Gradle itself cannot generate HTML reports for JUnit Platform tests.

Having said that, however, there is in fact a work around: you can use Ant within your Gradle build. Ant has a task for aggregating JUnit 4 based XML reports and generating an HTML report from those aggregated reports. The output is not very modern, but it is at least human readable. The downside is that the default XSLT stylesheet does not display the test class names for tests run via the JUnit Platform.

In any case, you can configure Ant's JUnitReport task in Gradle as follows.

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

Then, executing gradle check will generate an HTML report in build/test-reports/index.html.

Regards,

Sam (Core JUnit 5 committer)

这篇关于如何为JUnit 5测试创建HTML报告?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆