当通过Gradle启动JUnit测试时,是否已经可以生成HTML报告?任何提示或评论都很感激。
oknwwptz1#
更新
Gradle 4.6提供了对 JUnit Platform 的内置支持,允许您使用标准的Gradle test任务运行JUnit Jupiter测试,该任务可生成开箱即用的HTML报告。
test
针对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报告。输出不是很现代,但它至少是人类可读的。缺点是默认的JUnit样式表不显示通过JUnit平台运行的测试的测试类名。在任何情况下,您都可以在Gradle中配置Ant的JUnitReport任务,如下所示。
build/test-results/junit-platform
junitPlatformTest
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)
gradle check
build/test-reports/index.html
yqkkidmi2#
在我的target/test-result文件夹中添加下面的一行到我的java命令中创建了TEST-junit-jupiter.xml。这个xml文件包含了所有关于运行的测试用例数量、通过/失败的测试数量等信息
target/test-result
TEST-junit-jupiter.xml
--reports-dir target/test-result
ebdffaop3#
默认情况下,测试报告将在build/reports/tests/<Task Name>/index.html中提供。你可以在build.gradle[.kts]文件中这样修改:
build/reports/tests/<Task Name>/index.html
reporting.baseDir = file("my-reports")
请访问https://docs.gradle.org/current/userguide/java_testing.html#test_reporting
6qftjkof4#
是的,你可以使用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" } }
问候。
4条答案
按热度按时间oknwwptz1#
更新
Gradle 4.6提供了对 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报告,那么答案是“不,很遗憾不能”。原因是标准Gradletest
任务仅基于其专有的“二进制”报告格式生成HTML报告。由于junitPlatformTest
任务不会以Gradle的二进制格式生成报告,因此Gradle本身无法为JUnit平台测试生成HTML报告。话虽如此,但实际上有一个工作:您可以在Gradle构建中使用Ant。Ant的任务是聚合基于JUnit 4的XML报告,并从这些聚合的报告生成HTML报告。输出不是很现代,但它至少是人类可读的。缺点是默认的JUnit样式表不显示通过JUnit平台运行的测试的测试类名。
在任何情况下,您都可以在Gradle中配置Ant的JUnitReport任务,如下所示。
然后,执行
gradle check
将在build/test-reports/index.html
中生成一个HTML报告。此致,
Sam(Core JUnit 5 committer)
yqkkidmi2#
在我的
target/test-result
文件夹中添加下面的一行到我的java命令中创建了TEST-junit-jupiter.xml
。这个xml文件包含了所有关于运行的测试用例数量、通过/失败的测试数量等信息ebdffaop3#
默认情况下,测试报告将在
build/reports/tests/<Task Name>/index.html
中提供。你可以在build.gradle[.kts]文件中这样修改:
请访问https://docs.gradle.org/current/userguide/java_testing.html#test_reporting
6qftjkof4#
是的,你可以使用Jacoco插件。
下面是一个示例:
问候。