gradle 如何为JUnit 5测试创建HTML报告?

pgvzfuti  于 2023-10-19  发布在  其他
关注(0)|答案(4)|浏览(125)

当通过Gradle启动JUnit测试时,是否已经可以生成HTML报告?任何提示或评论都很感激。

oknwwptz

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报告,那么答案是“不,很遗憾不能”。原因是标准Gradle test任务仅基于其专有的“二进制”报告格式生成HTML报告。由于junitPlatformTest任务不会以Gradle的二进制格式生成报告,因此Gradle本身无法为JUnit平台测试生成HTML报告。
话虽如此,但实际上有一个工作:您可以在Gradle构建中使用Ant。Ant的任务是聚合基于JUnit 4的XML报告,并从这些聚合的报告生成HTML报告。输出不是很现代,但它至少是人类可读的。缺点是默认的JUnit样式表不显示通过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

yqkkidmi

yqkkidmi2#

在我的target/test-result文件夹中添加下面的一行到我的java命令中创建了TEST-junit-jupiter.xml。这个xml文件包含了所有关于运行的测试用例数量、通过/失败的测试数量等信息

--reports-dir target/test-result
ebdffaop

ebdffaop3#

默认情况下,测试报告将在build/reports/tests/<Task Name>/index.html中提供。
你可以在build.gradle[.kts]文件中这样修改:

reporting.baseDir = file("my-reports")

请访问https://docs.gradle.org/current/userguide/java_testing.html#test_reporting

6qftjkof

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"
    }
}

问候。

相关问题