junit自定義測試方法執行順序
阿新 • • 發佈:2019-01-12
平常我們寫單元測試類,多個方法的執行順序其實是沒有特定順序的。例如下面程式碼:
package com.laoxu.gamedog; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; /** * 自定義方法的測試順序 * * @author xusucheng * @create 2018-12-14 **/ public class MethodOrderTest { @Test public void testFirst() { System.out.println("test1"); } @Test public void testSecond() { System.out.println("test2"); } @Test public void testThree() { System.out.println("test3"); } }
輸出:
test1
test3
test2
那假如我要調整執行順序呢? 我要按照test1--test2--test3順序執行如何?
其實從junit4.11開始提供了3種排序選擇,在一個列舉類MethodSorters中。
DEFAULT:以一種固定的順序執行,無法預知
JVM:由JVM確定執行順序,無法預知
NAME_ASCENDING:以測試方法的名稱字典排序。即按照字母順序,或者數字小大順序,由小到大的形成序列。
其實就是在測試類添加註解:
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
package com.laoxu.gamedog; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; /** * 自定義方法的測試順序 * * @author xusucheng * @create 2018-12-14 **/ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class MethodOrderTest { @Test public void testFirst() { System.out.println("test1"); } @Test public void testSecond() { System.out.println("test2"); } @Test public void testThree() { System.out.println("test3"); } }
輸出:
test1
test2
test3