【測試之道】深刻探索:單元測試之測試執行順序

測試執行順序

因爲設計緣由,JUnit不會特別指定測試方法調用的執行順序。到目前爲止,這些方法只是按照反射API返回的順序調用的。然而,使用JVM 的指令順序返回是一種不太明智的作法。由於JVM平臺也是沒有指定任何特定的順序,其實JDK 返回或多或少是有點隨機性的。固然,一個好的測試方法是不會假設有任何的順序的,可是,有些時候,咱們對業務測試會有這樣的需求的,不能隨機而來。畢竟,可預見的故障比某些平臺上的隨機故障要好,隨機意味着故障將有很大的不肯定和難排查性。 從JUnit4.11 開始,JUnit將默認使用一個肯定性的,但不可預測的順序。(MethodSorters.DEFAULT), 改變測試方法的執行順序,只須要用**@FixMethodOrder** 註解到你的測試類中,以及一個可用的測試方法排序方式就好, 如:測試

  • @FixMethodOrder(MethodSorters.JVM) :這樣就是按照JVM返回的順序留下測試方法。此Order可能因運行而異(機器不一樣可能有差別)
  • **@FixMethodOrder(MethodSorters.NAME_ASCENDING) ** :按各類測試方法的方法的名稱,在字典序(按測試方法的字母來)。

舉例

import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestMethodOrder {

    @Test
    public void testA() {
        System.out.println("first");
    }
    @Test
    public void testB() {
        System.out.println("second");
    }
    @Test
    public void testC() {
        System.out.println("third");
    }
}

執行結果:設計

first
second
third
  • 不管我把A B C 這三個方法如何打亂,都是這個結果,按字母升序來執行。
  • 若是是按JVM來,你多執行幾回,就發現會有很大的隨機性。
  • 若是是默認方法,那麼順序是能夠肯定的,可是執行過程就是不能夠預見的。
相關文章
相關標籤/搜索