JUnit 5单元测试保证执行顺序

一般实践认为,自动化测试应能够独立运行且无特定顺序,并且测试结果不应依赖于先前测试的结果。 但是在某些情况下,可以证明特定的测试执行顺序是正确的,尤其是在集成或端到端测试中。

默认情况下,在JUnit 5中,测试方法的执行在构建之间是可重复的,因此具有确定性,但是该算法是故意不明显的(作为库状态的作者)。 幸运的是,可以使用内置方法定购器或通过创建自定义定购器来调整执行顺序以满足我们的需求。

org.junit.jupiter.api.TestMethodOrder

为了更改测试执行顺序,我们需要使用org.junit.jupiter.api.TestMethodOrder注释测试类,并将方法排序器的类型作为参数传递。 从JUnit 5.4开始,有三个内置的方法排序器: OrderAnnotation , Alphanumeric和Random 。 通过实现org.junit.jupiter.api.MethodOrderer接口,我们还可以轻松创建自己的自定义方法org.junit.jupiter.api.MethodOrderer器。

指定顺序

import org.junit.jupiter.api.MethodOrderer;  
import org.junit.jupiter.api.Order;  
import org.junit.jupiter.api.Test;  
import org.junit.jupiter.api.TestMethodOrder;  

@TestMethodOrder(MethodOrderer.OrderAnnotation. class )  
class TestExecutionOrderWithOrderAnnotation { 
     @Order ( 1 ) 
     @Test 
     void aTest() {} 
     @Order ( 2 ) 
     @Test 
     void bTest() {} 
     @Order ( 3 ) 
     @Test 
     void cTest() {}  
 }

字母数字顺序

 @TestMethodOrder (MethodOrderer.Alphanumeric. class )  
 class AlphanumericTestExecutionOrder { 
     @Test 
     void aTest() {} 
     @Test 
     void bTest() {} 
     @Test 
     void cTest() {}  
} 

随机排序

 @TestMethodOrder (MethodOrderer.Random. class )  
 class AlphanumericTestExecutionOrder { 
     @Test 
     void aTest() {} 
     @Test 
     void bTest() {} 
     @Test 
     void cTest() {}  
} 

内容参考:https://blog.csdn.net/dnc8371/article/details/107256458/

posted @ 2021-03-18 10:56  Mirage_c  阅读(575)  评论(0)    收藏  举报