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

时间:2019-04-02 13:30:44

标签: java unit-testing 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;
    }

}

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

1 个答案:

答案 0 :(得分:2)

不。嵌套类中的测试会在封闭类中的测试之后始终执行。那不能改变。

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