当通过Gradle启动JUnit测试时,是否已经有可能生成HTML报告?任何提示或评论都表示赞赏。
答案 0 :(得分:12)
<强>更新强>
Gradle 4.6提供built-in support for the JUnit Platform,允许您使用标准Gradle test
任务运行JUnit Jupiter测试,该任务可立即生成HTML报告。
回答4.6之前的Gradle版本
JUnit Platform Gradle Plugin生成JUnit 4样式的XML测试报告。
默认情况下,这些XML文件会输出到build/test-results/junit-platform
。
因此,如果您的构建服务器知道如何解析JUnit 4样式的XML报告,您只需将其指向该目录中的XML文件,然后让构建服务器为您生成HTML报告。
但是,如果您询问 Gradle 是否可以为通过junitPlatformTest
任务运行的测试生成HTML报告,那么答案是&#34;不,不幸的是没有。& #34;原因是标准Gradle test
任务仅基于其自己的专有&#34;二进制&#34;生成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( Core JUnit 5 committer )
答案 1 :(得分:1)
在我的<BytesBuilder> magicString.add(--the bytes above--)
文件夹中创建TEST-junit-jupiter.xml
的java命令中添加以下行。此xml文件包含有关运行的测试用例数,已通过/未通过的测试数等的所有信息
target/test-result
答案 2 :(得分:-1)
是的,您可以使用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"
}
}
问候。