Eclipse中动态测试的测试发现缓慢

时间:2018-03-21 08:43:30

标签: eclipse junit5

拥有这样的测试类

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还是我的代码的问题?

1 个答案:

答案 0 :(得分:3)

动态测试动态。不是静止的。

不可能事先知道@TestFactory注释方法将生成哪些测试和多少测试...实际上,它可能会在永恒循环中产生测试。

https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests-examples

复制
  

generateRandomNumberOfTests()实现了一个生成的迭代器   随机数,显示名称生成器和测试执行器然后   将所有三个提供给DynamicTest.stream()。虽然   generateRandomNumberOfTests()的非确定性行为   当然与测试可重复性相冲突,因此应该使用   小心翼翼,它有助于展示其表现力和力量   动态测试。