JUnit5:指定多个@Nested类的执行顺序

Joc*_*ckX 7 java junit junit5

Junit5 是否对@Nested同一父级中定义的类的执行顺序提供任何保证?通过我制作的一个简单示例,我注意到测试是以与声明相反的顺序执行的,但这种行为既没有记录(或者是吗?),也不与带@Test注释的方法默认的排序方式一致。

这也很烦人,因为显然我宁愿有一个非反向的顺序,如果不是一种类似于@TestMethodOrder.

import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

class NestedOrderTest {
    @Nested
    class NestedTest1 {
        @Test
        void testSuccess1() {
            System.out.println(1);
        }
    }

    @Nested
    class NestedTest2 {
        @Test
        void testSuccess2() {
            System.out.println(2);
        }
    }

    @Nested
    class NestedTest3 {
        @Test
        void testSuccess3() {
            System.out.println(3);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

3
2
1
Run Code Online (Sandbox Code Playgroud)

Joc*_*ckX 5

Junit 5.8@Nested中添加了类排序功能。至此,平台给出了用户可能需要的一切保障。

import org.junit.jupiter.api.ClassOrderer;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestClassOrder;

@TestClassOrder(ClassOrderer.OrderAnnotation.class)
class OrderedNestedTestClassesDemo {

    @Nested
    @Order(1)
    class PrimaryTests {

        @Test
        void test1() {
        }
    }

    @Nested
    @Order(2)
    class SecondaryTests {

        @Test
        void test2() {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)