Junit5的测试报告输出插件,还有其他更好的选择吗? Gradle平台或Maven平台

时间:2019-10-28 01:10:52

标签: maven gradle junit5

我正在学习使用junit5。 我按照教程编写了一些动态测试,然后使用gradle进行了测试。但是默认情况下,gradle生成的测试报告对我来说还不够好,它不包含嵌套的测试容器结构。运行动态测试时,是否有其他方法可以输出格式更好的测试报告?类似于intellij构想测试报告。 代码:

    @TestFactory
    Stream<DynamicNode> dynamicTestsWithContainers() {
        return Stream.of("A", "B", "C")
                .map({ input ->
                    dynamicContainer("Container " + input, Stream.of(
                            dynamicTest("not null", { -> assertNotNull(input) }) as DynamicNode,
                            dynamicContainer("properties", Stream.of(
                                    dynamicTest("length > 0", { -> assertTrue(input.length() > 0) }),
                                    dynamicTest("not empty", { -> assertFalse(input.isEmpty()) })
                            ))
                    ))
                })
    }

与gradle一起运行:

html report xml report

以intellij的想法运行:

intellij idea report

1 个答案:

答案 0 :(得分:0)

我发现maven-surefire-plugin自版本3.0.0起支持使用JUnit5Xml30StatelessReport为JUnit5提供更好的报告。使用示例在documentation中给出:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M4</version>
    <configuration>
        <testFailureIgnore>true</testFailureIgnore>
        <statelessTestsetReporter
            implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5Xml30StatelessReporter">
            <disable>false</disable>
            <version>3.0</version>
            <usePhrasedFileName>true</usePhrasedFileName>
            <usePhrasedTestSuiteClassName>true</usePhrasedTestSuiteClassName>
            <usePhrasedTestCaseClassName>true</usePhrasedTestCaseClassName>
            <usePhrasedTestCaseMethodName>true</usePhrasedTestCaseMethodName>
        </statelessTestsetReporter>
    </configuration>
 </plugin>

usePhrasedXXX参数设置为true时,报告者尊重动态测试的描述。但是,它仍然不尊重嵌套结构(所有tescase都在平面列表中)。