我使用Junit 5注释@TestFactory
生成了几个这样的测试:
@TestFactory
public Collection<DynamicTest> myTest() throws IOException {
return fetchSomeTests().stream()
.map(test -> {
return dynamicTest(test.get("testDescription"), () -> doMyTest(test));
}).collect(Collectors.toList());
}
是否可以在组中组织生成的测试,就像使用不同类@Test
时一样?
答案 0 :(得分:3)
不确定。使用Collection<DynamicNode>
作为返回类型,并根据需要创建任意数量的组。
复制自:https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests
DynamicContainer
个实例由显示名称和动态子节点列表组成,可以创建任意嵌套的动态节点层次结构。
以下是生成嵌套动态容器和测试的示例:
@TestFactory
Stream<DynamicNode> dynamicTestsWithContainers() {
return Stream.of("A", "B", "C")
.map(input -> dynamicContainer("Container " + input, Stream.of(
dynamicTest("not null", () -> assertNotNull(input)),
dynamicContainer("properties", Stream.of(
dynamicTest("length > 0", () -> assertTrue(input.length() > 0)),
dynamicTest("not empty", () -> assertFalse(input.isEmpty()))
))
)));
}
它会生成如下树:
│ ├─ DynamicTestsDemo ✔
│ │ ├─ dynamicTestsWithContainers() ✔
│ │ │ ├─ Container A ✔
│ │ │ │ ├─ not null ✔
│ │ │ │ └─ properties ✔
│ │ │ │ ├─ length > 0 ✔
│ │ │ │ └─ not empty ✔
│ │ │ ├─ Container B ✔
│ │ │ │ ├─ not null ✔
│ │ │ │ └─ properties ✔
│ │ │ │ ├─ length > 0 ✔
│ │ │ │ └─ not empty ✔
│ │ │ └─ Container C ✔
│ │ │ ├─ not null ✔
│ │ │ └─ properties ✔
│ │ │ ├─ length > 0 ✔
│ │ │ └─ not empty ✔