数据提供者
数据提供者允许创建在测试中运行的多个测试输入。让我们考虑一个测试,它验证数字是否正确加倍。要创建数据提供程序,请提供一个静态方法,该方法返回 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);
}
}