JUnit5:指定嵌套测试的执行顺序

2022-06-13 00:00:00 unit-testing java junit5

是否可以以固定的执行顺序在某些其他测试之间执行多个嵌套测试?

例如

@TestInstance(Lifecycle.PER_CLASS)
@TestMethodOrder(OrderAnnotation.class)
class MyTest {

    private State state = State.ZERO;

    @Test
    @Order(1)
    public void step1() throws IOException {
        state = State.ONE;
    }

    @Order(2)  // sth like this, however this annotation isn't allowed here
    @Nested
    class WhileInStateOne {

        @Test
        public void step2a {
            Assumptions.assumeTrue(state == State.ONE);

            // test something
        }

        @Test
        public void step2b {
            Assumptions.assumeTrue(state == State.ONE);

            // test something else
        }

    }

    @Test
    @Order(3)
    public void step3() throws IOException {
        state = State.THREE;
    }

}

我知道,单元测试通常应该是无状态的,但是在这种情况下,如果我可以按固定顺序重用状态,我可以节省大量执行时间。


解决方案

否。嵌套类中的测试始终在封闭类中的测试之后执行。这是无法更改的。

测试方法的排序仅适用于单个测试类中的方法。

相关文章