我正在学习使用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一起运行:
以intellij的想法运行:
答案 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都在平面列表中)。