java - JUnit 5 : Specify execution order for nested tests

标签 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;
    }

}

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

最佳答案

没有。嵌套类中的测试总是在封闭类中的测试之后执行。这是无法改变的。

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

关于java - JUnit 5 : Specify execution order for nested tests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55476069/

相关文章:

java - Java中的if条件语句可以多行吗

java - 忽略 Junit5 中的测试

JUnit5 属性文件在测试运行期间导致不需要的日志记录

java - 在我停止执行 cURL 命令的 java 程序之前,cURL -o 命令不会输出到文件

java - 文本文件io和换行符

unit-testing - NestJs 对 typeorm 分页进行单元测试时出现错误 queryBuilder.take(...).skip 不是函数

java - 运行单元测试时 RmiRegistry 创建多次

java - 无法在 junit 5 中使用 @ContextConfiguration 创建用于测试的 bean

java - JIDE公共(public)层 undefined symbol sun.awt.image.CachingSurfaceManager

java - gradle:如何从根项目运行子项目的 JUnit 测试?