【发布时间】:2018-03-21 08:43:29
【问题描述】:
有这样的测试类
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));
}
}
具有@Test 注释的测试会被 JUnit View 立即发现,但是来自 TestFactory 的测试是在运行时发现的,每个测试都在最后一个测试完全执行之后。这会导致 JUnit 视图发生变化和“跳跃”。此外,在执行所有以前的测试之前,我无法选择我感兴趣的特殊测试作为单个测试执行。
如果所有动态测试在测试执行开始时也显示在 JUnit 视图中会更好。
如果这没有发生,是JUnit 5、eclipse还是我的代码的问题?
【问题讨论】: