gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:06:05 28 4
gpt4 key购买 nike

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

最佳答案

更新

Gradle 4.6 提供 built-in support for the JUnit Platform它允许您使用标准 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 Platform 测试生成 HTML 报告。

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

无论如何,你都可以配置Ant的JUnitReport Gradle 中的任务如下。

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 提交者)

关于gradle - 如何为 JUnit 5 测试创建 HTML 报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39444908/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com