JUNIT 5中有三种方法可以指定测试用例的顺序:
1)使用@order注解
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class TestExecutionOrderWithOrderAnnotation {
@Order(1)
@Test
void aTest() {}
@Order(2)
@Test
void bTest() {}
@Order(3)
@Test
void cTest() {}
}
2) 使用字母顺序
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
class AlphanumericTestExecutionOrder {
@Test
void aTest() {}
@Test
void bTest() {}
@Test
void cTest() {}
}
3) 使用随机顺序:
@TestMethodOrder(MethodOrderer.Random.class)
class AlphanumericTestExecutionOrder {
@Test
void aTest() {}
@Test
void bTest() {}
@Test
void cTest() {}
}
默认是用System.nanoTime()纳秒的,也可以在配置文件中更改,在junit-platform.properties中更改:junit.jupiter.execution.order.random.seed=
42
4)自定义顺序
class MethodLengthOrderer implements MethodOrderer {
private Comparator<MethodDescriptor> comparator =
Comparator.comparingInt(methodDescriptor -> methodDescriptor.getMethod().getName().length());
@Override
public void orderMethods(MethodOrdererContext context) {
context.getMethodDescriptors().sort(comparator);
}
}
比如上面的,是根据方法的长度来做顺序比较,使用方法:
@TestMethodOrder(MethodLengthOrderer.class)
class CustomTestExecutionOrder {
@Test
void aTest() {}
@Test
void abTest() {}
@Test
void abcTest() {}
}