資料提供者

資料提供者允許建立在測試中執行的多個測試輸入。讓我們考慮一個測試,它驗證數字是否正確加倍。要建立資料提供程式,請提供一個靜態方法,該方法返回 Object[][]Iterator<Object[]>(後者允許對測試輸入進行延遲計算),使用 @DataProvider 註釋進行註釋,屬性 name 是標識提供程式的唯一字串。

import org.testng.annotations.DataProvider;

public class DoublingDataProvider {
    public final static String DOUBLING_DATA_PROVIDER = "doublingDataProvider";

    @DataProvider(name = DOUBLING_DATA_PROVIDER)
    public static Object[][] doubling() {
        return new Object[][]{
                new Object[]{1, 2},
                new Object[]{2, 4},
                new Object[]{3, 6}
        };
    }
}

在上面的例子中,每個 Object[] 代表一個測試用例的資料集 - 這裡是要加倍的數字,然後是加倍後的預期值。

要使用資料提供程式,請使用提供程式的名稱填充測試的 dataProvider 屬性。如果提供程式方法是在測試類或其基類之外定義的,則還必須指定 dataProviderClass 屬性。測試方法應該採用與測試用例描述的元素相對應的引數 - 這裡是兩個整數。

import org.testng.annotations.Test;

import static org.testng.Assert.assertEquals;

public class DoublingTest {

    @Test(dataProvider = DoublingDataProvider.DOUBLING_DATA_PROVIDER, dataProviderClass = DoublingDataProvider.class)
    public void testDoubling(int number, int expectedResult) {
        assertEquals(number * 2, expectedResult);
    }
}