【问题标题】:Test Discovery of Dynamic Tests in Eclipse SlowEclipse Slow 中动态测试的测试发现
【发布时间】: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还是我的代码的问题?

【问题讨论】:

    标签: eclipse junit5


    【解决方案1】:

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

    不可能事先知道@TestFactory注解的方法会生成哪些测试以及多少测试......实际上,它可能会在一个永恒的循环中产生测试。

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

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

    【讨论】:

    • 好的;据我了解,这是一个junit5问题,所以我与github.com/junit-team/junit5/issues/1338进行讨论
    • 没有。这不是任何组件的问题。它是按预期设计和工作的。
    • 闪烁是因为 Eclipse 树视图不是增量更新,而是在每次更改时从头开始重建,失去它的打开状态和选择的东西。这绝对是一个错误,现在使用 junit 5,实际上将更新树结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    相关资源
    最近更新 更多