如何为 JUnit 5 测试创建 HTML 报告?
How to create an HTML report for JUnit 5 tests?
当通过 Gradle 启动 JUnit 测试时,是否已经可以生成 HTML 报告?任何提示或评论表示赞赏。
是的,您可以使用 Jacoco 插件。
这是一个例子:
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"
}
}
此致。
更新
Gradle 4.6 提供 built-in support for the JUnit Platform 允许您使用标准 Gradle test
任务 运行 JUnit Jupiter 测试生成 HTML开箱即用的报告。
4.6
之前 Gradle 版本的答案
JUnit 平台Gradle 插件生成 JUnit 4 风格XML 测试报告。
这些XML个文件默认输出到build/test-results/junit-platform
。
因此,如果您的构建服务器知道如何解析 JUnit 4 样式的 XML 报告,您只需将其指向该目录中的 XML 文件,然后让构建服务器生成 HTML为你报道
但是,如果您询问 Gradle 是否可以通过 junitPlatformTest
为您的测试 运行 生成 HTML 报告] 任务,则答案是 "No, unfortunately not." 原因是标准 Gradle test
任务仅根据其专有的 "binary" 报告格式生成 HTML 报告。由于 junitPlatformTest
任务不会以 Gradle 的二进制格式生成报告,因此 Gradle 本身无法为 JUnit 平台测试生成 HTML 报告。
话虽如此,但实际上有一个解决方法:您可以在 Gradle 构建中使用 Ant。 Ant 的任务是聚合基于 JUnit 4 的 XML 报告并从这些聚合报告生成 HTML 报告。输出不是很现代,但至少是人类可读的。缺点是默认的 XSLT 样式表不会通过 JUnit 平台显示测试 class 的测试名称 运行。
无论如何,您可以在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 提交者)
将以下行添加到我的 java 命令中,在我的 target/test-result
文件夹中创建了 TEST-junit-jupiter.xml
。此 xml 文件包含有关测试用例数量 运行、测试数量 passed/failed 等的所有信息
--reports-dir target/test-result
当通过 Gradle 启动 JUnit 测试时,是否已经可以生成 HTML 报告?任何提示或评论表示赞赏。
是的,您可以使用 Jacoco 插件。
这是一个例子:
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"
}
}
此致。
更新
Gradle 4.6 提供 built-in support for the JUnit Platform 允许您使用标准 Gradle test
任务 运行 JUnit Jupiter 测试生成 HTML开箱即用的报告。
4.6
之前 Gradle 版本的答案JUnit 平台Gradle 插件生成 JUnit 4 风格XML 测试报告。
这些XML个文件默认输出到build/test-results/junit-platform
。
因此,如果您的构建服务器知道如何解析 JUnit 4 样式的 XML 报告,您只需将其指向该目录中的 XML 文件,然后让构建服务器生成 HTML为你报道
但是,如果您询问 Gradle 是否可以通过 junitPlatformTest
为您的测试 运行 生成 HTML 报告] 任务,则答案是 "No, unfortunately not." 原因是标准 Gradle test
任务仅根据其专有的 "binary" 报告格式生成 HTML 报告。由于 junitPlatformTest
任务不会以 Gradle 的二进制格式生成报告,因此 Gradle 本身无法为 JUnit 平台测试生成 HTML 报告。
话虽如此,但实际上有一个解决方法:您可以在 Gradle 构建中使用 Ant。 Ant 的任务是聚合基于 JUnit 4 的 XML 报告并从这些聚合报告生成 HTML 报告。输出不是很现代,但至少是人类可读的。缺点是默认的 XSLT 样式表不会通过 JUnit 平台显示测试 class 的测试名称 运行。
无论如何,您可以在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 提交者)
将以下行添加到我的 java 命令中,在我的 target/test-result
文件夹中创建了 TEST-junit-jupiter.xml
。此 xml 文件包含有关测试用例数量 运行、测试数量 passed/failed 等的所有信息
--reports-dir target/test-result