1. 程式人生 > >JAVA利用enum結合testng做資料驅動示例

JAVA利用enum結合testng做資料驅動示例

資料驅動是做自動化測試中很重要的一部分,資料來源的方案也是百花八門了,比如利用外部檔案,直接在@DataProvider中寫死等等,我們今天介紹一下利用enum來做資料來源,先來看一下enum的寫法:

public enum EnumData {

    PAY_RESERVE(1, "支付預約"),
    DIRECT_RESERVE(2, "直接預約"),
    BILL(3, "開單");

    EnumData(int resultCode, String resultMsg) {
        this.resultCode = resultCode;
        
this.resultMsg = resultMsg; } private int resultCode; private String resultMsg; public int getResultCode() { return resultCode; } public String getResultMsg() { return resultMsg; } }

上述程式碼可理解為有兩組資料,每一組裡面有兩個資料,一個是retCode,一個是msg。現在把enum給載入到@DataProvider中去:

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class TestEnumData {


    @DataProvider
    public Object[][] enumDataMethod() {
        EnumData[] vs = EnumData.values();
        Object[][] obj = new Object[vs.length][];
        for (int i = 0; i < vs.length; i++) {
            obj[i] = new Object[]{vs[i]};
        }
        return obj;
    }

    @Test(dataProvider = "enumDataMethod")
    public void test(EnumData en) {
        System.out.println(en.getResultCode() + "\t" + en.getResultMsg());
    }

}

利用上述方式最大的好處是把資料本身與持久化的物件放在一個地方了,且呼叫時,也很方便。

其實,利用外部檔案的話,也可以資料物件持久化,只是原來的示例中我放在了一個Map中,同樣可以把Map改為一個pojo物件,呼叫時也會很方便。

至於哪種方式好,大家自行的去體驗,自行的去實現吧!