问题描述
当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报告。
在任何情况下,您都可以配置Ant的 然后,执行 问候, 山姆( 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 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 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 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. Then, executing Regards, Sam (Core JUnit 5 committer) 这篇关于如何为JUnit 5测试创建HTML报告?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
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报告。
test
task which generates HTML reports out of the box.build/test-results/junit-platform
by default.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.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
will generate an HTML report in build/test-reports/index.html
.