2.9、测试执行顺序
默认情况下,测试方法会根据某种确定但不明显得顺序算法执行。这保证了随后得测试案例都会以相同得顺序执行,因此后面可以重复构建。
尽管真正得单元测试不应该依赖于他们得执行顺序,但有的时候还必须保证它们以某种执行顺序执行。比如,在编写集成测试或者功能测试得时候,测试得执行顺序就非常重要了,特别在与@TestInstance(Lifecycle.PER_CLASS)
注解一起使用。
为了控制测试方法得执行顺序,需要在你的测试类和测试接口上使用@TestMethodOrder
,然后指明MethodOrder
来实现。你可以使用你自定义得MethodOrder
或者使用下面某个MethodOrder
得实现。
Alphanumeric
:根据测试方法得名称和形式参数列表得字母顺序来排序测试方法;OrderAnnotation
:按照@Order
注解上指定值得大小来排序测试方法;Random
:支持使用自定义得种子来配置伪随机来排序测试方法;
下面得例子就是通过@Order
注解来保证测试方法得执行顺序。
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
@TestMethodOrder(OrderAnnotation.class)
class OrderedTestsDemo {
@Test
@Order(1)
void nullValues() {
// perform assertions against null values
}
@Test
@Order(2)
void emptyValues() {
// perform assertions against empty values
}
@Test
@Order(3)
void validValues() {
// perform assertions against valid values
}
}