1. 程式人生 > >junit自定義測試方法執行順序

junit自定義測試方法執行順序

 

平常我們寫單元測試類,多個方法的執行順序其實是沒有特定順序的。例如下面程式碼:

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