junit 執行順序問題

junit 執行順序問題

猜猜以下代碼的輸出結果:

public class JunitOrderTest {
    @Test
    public void aTest() { System.out.println("a"); }

    @Test
    public void a1Test() { System.out.println("a1"); }

    @Test
    public void bTest() { System.out.println("b"); }

    @Test
    public void cTest() { System.out.println("c"); }

    @Test
    public void aaTest() { System.out.println("aa"); }

    @Test
    public void abTest() { System.out.println("ab"); }
}

答案是:

a1
aa
ab
a
b
c

先說結論:junit默認按方法名的按方法名的hashcode排序
若希望junit執行順序,可在類名上添加註解:@FixMethodOrder

@FixMethodOrder接受MethodSorters枚舉值
MethodSorters的具體枚舉值有:
- NAME_ASCENDING:按方法名的toString()函數結果排序
- JVM:順序隨機
- DEFAULT:MethodSorters的默認值,junit默認的執行順序。按方法名的hashcode排序

MethodSorters.NAME_ASCENDING示例

// 按方法名的toString()函數結果排序
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class JunitOrderTest {
    @Test
    public void aTest() { System.out.println("a"); }

    @Test
    public void a1Test() { System.out.println("a1"); }

    @Test
    public void bTest() { System.out.println("b"); }

    @Test
    public void cTest() { System.out.println("c"); }

    @Test
    public void aaTest() { System.out.println("aa"); }

    @Test
    public void a100Test() { System.out.println("a100"); }

    @Test
    public void abTest() { System.out.println("ab"); }
}

// 輸出結果
a100
a1
a
aa
ab
b
c

MethodSorters.JVM示例

// 隨機
@FixMethodOrder(MethodSorters.JVM)
public class JunitOrderTest {
    @Test
    public void aTest() { System.out.println("a"); }

    @Test
    public void a1Test() { System.out.println("a1"); }

    @Test
    public void bTest() { System.out.println("b"); }

    @Test
    public void cTest() { System.out.println("c"); }

    @Test
    public void aaTest() { System.out.println("aa"); }

    @Test
    public void abTest() { System.out.println("ab"); }
}

// 輸出結果
a
ab
b
c
aa
a1

MethodSorters.DEFAULT的運行結果不再贅述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章