Gradle 如何为JUnit5测试创建HTML报告?

Gradle 如何为JUnit5测试创建HTML报告?,gradle,junit,junit5,Gradle,Junit,Junit5,当通过Gradle启动JUnit测试时,是否已经有可能生成HTML报告?任何提示或评论都将不胜感激。是的,您可以使用Jacoco插件 以下是一个例子: apply plugin: 'war' or apply plugin: 'java' apply plugin: "jacoco" test { reports.junitXml.destination="build/test-results" jacoco { destinationFile = file("

当通过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提供了一个可以让您使用标准Gradle
test
任务运行JUnit Jupiter测试的工具,该工具可以直接生成HTML报告


回答4.6之前的Gradle版本的问题

JUnit平台Gradle插件生成JUnit 4风格的XML测试报告

默认情况下,这些XML文件被输出到
build/testresults/junit platform

因此,如果构建服务器知道如何解析JUnit4样式的XML报告,那么您可以将它指向该目录中的XML文件,让构建服务器为您生成HTML报告

但是,如果您询问Gradle是否可以为通过
junitPlatformTest
任务运行的测试生成HTML报告,那么答案是“不,很遗憾不是”。原因是标准Gradle
test
任务仅基于其专有的“二进制”报告格式生成HTML报告。由于junitPlatformTest任务不生成Gradle二进制格式的报告,因此Gradle本身无法为JUnit平台测试生成HTML报告

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

在任何情况下,您都可以在Gradle中配置Ant的任务,如下所示

junitPlatform{
//正常配置
}
配置{
junitXmlToHtml
}

task GenerateHTMLestReports在我的
目标/测试结果
文件夹中创建的
测试junit jupiter.xml
的java命令中添加以下行。此xml文件包含有关运行的测试用例数、通过/失败的测试数等的所有信息

 --reports-dir target/test-result

Jacoco创建了一个覆盖率报告,与测试成功报告不同!所以,如果我理解正确,这是由于JUnit4和JUnit5之间的变化,对吗?是的。JUnit平台(JUnit 5的一部分)提供了比JUnit 4更多的报告信息,因此没有映射到Gradle中的内置测试基础设施(基于JUnit 4)。您可以观看以下关于Gradle团队官方JUnit平台支持的更新:值得注意的是,此代码段不会生成失败测试的报告。为此,您需要运行./gradlew--继续检查GenerateHTMLestReports或SimilariImportant,如果您有junit 5附带的junit 5 gradle插件(在4.6之前启用),则需要删除该插件的配置。我花了一段时间才弄明白。我们应用了org.junit.platform:junitplatformgradle-plugin:1.0.1。从4.6开始不再需要