如何为 JUnit 5 测试创建 HTML 报告?

问题描述 投票:0回答:4

通过 Gradle 启动 JUnit 测试时是否已经可以生成 HTML 报告?任何提示或评论表示赞赏。

gradle junit junit5
4个回答
16
投票

更新

Gradle 4.6 为 JUnit 平台提供了内置支持,它允许您使用标准 Gradle

test
任务运行 JUnit Jupiter 测试,该任务可生成开箱即用的 HTML 报告。


4.6之前的Gradle版本解答

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

这些 XML 文件默认输出到

build/test-results/junit-platform

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

但是,如果您询问 Gradle 是否可以为通过

junitPlatformTest
任务运行的测试生成 HTML 报告,那么答案是“不,不幸的是不能”。原因是标准 Gradle
test
任务仅根据其自己专有的“二进制”报告格式生成 HTML 报告。由于
junitPlatformTest
任务不会生成 Gradle 二进制格式的报告,因此 Gradle 本身无法为 JUnit 平台测试生成 HTML 报告。

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

无论如何,您都可以在 Gradle 中配置 Ant 的 JUnitReport 任务,如下所示。

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

然后,执行

gradle check
将在
build/test-reports/index.html
中生成HTML报告。

问候,

Sam(核心 JUnit 5 提交者


2
投票

将以下行添加到我的

TEST-junit-jupiter.xml
文件夹中创建的 java 命令中。这个 xml 文件包含有关运行的测试用例数量、通过/失败的测试数量等的所有信息

target/test-result



0
投票
--reports-dir target/test-result

中提供。

您可以在 build.gradle[.kts] 文件中进行更改:

build/reports/tests/<Task Name>/index.html

参见 
https://docs.gradle.org/current/userguide/java_testing.html#test_reporting


-2
投票

这是一个例子:

reporting.baseDir = file("my-reports")

问候。

© www.soinside.com 2019 - 2024. All rights reserved.