拥有这样的测试类
public class VerySimpleFactory {
@TestFactory
public Stream<? extends DynamicNode> someTests() {
DynamicContainer container1 = DynamicContainer.dynamicContainer("A",
Arrays.asList(t("A1"), t("A2"), t("A3"), t("A4"), t("A5")));
DynamicContainer container2 = DynamicContainer.dynamicContainer("B",
Arrays.asList(t("B1"), t("B2"), t("B3"), t("B4"), t("B5")));
DynamicContainer container3 = DynamicContainer.dynamicContainer("C",
Arrays.asList(t("C1"), t("C2"), t("C3"), t("C4"), t("C5")));
DynamicContainer container4 = DynamicContainer.dynamicContainer("D",
Arrays.asList(t("D1"), t("D2"), t("D3"), t("D4"), t("D5")));
return Arrays.asList(container1, container2, container3, container4).stream();
}
@Test
public void t1() throws Exception {
Thread.sleep(1000);
}
@Test
public void t2() throws Exception {
Thread.sleep(1000);
}
public DynamicTest t(String name) {
return DynamicTest.dynamicTest(name, () -> Thread.sleep(1000));
}
}
JUnit View会立即发现具有@Test
注释的测试,但TestFactory的测试会在运行时发现,每次测试完成后都会发现。这导致了一个变化和跳跃&#34; JUnit视图。此外,我无法选择一个我感兴趣的特殊测试作为单个测试执行,直到所有先前的测试都被执行。
如果在测试执行开始时所有动态测试都显示在JUnit视图中,那将会更好。
如果这没有发生,是JUnit 5,eclipse还是我的代码的问题?
答案 0 :(得分:3)
动态测试动态。不是静止的。
不可能事先知道@TestFactory
注释方法将生成哪些测试和多少测试...实际上,它可能会在永恒循环中产生测试。
从https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests-examples
复制
generateRandomNumberOfTests()
实现了一个生成的迭代器 随机数,显示名称生成器和测试执行器然后 将所有三个提供给DynamicTest.stream()
。虽然generateRandomNumberOfTests()
的非确定性行为 当然与测试可重复性相冲突,因此应该使用 小心翼翼,它有助于展示其表现力和力量 动态测试。