【发布时间】:2019-09-02 21:10:40
【问题描述】:
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);
}
}
}
输出:
3
2
1
【问题讨论】:
-
关心测试执行的顺序是测试之间依赖关系的标志,这意味着后续测试(有意或无意)使用由早期测试更改的状态。如果可能的话,你应该避免这种情况。
-
@AndyTurner 该死的,我忘记了通常的免责声明 :)