TestNG中@Factory与@DataProvider的功能大相径庭,但是在多次执行的问题上常常理不清。
1.@DataProvider
首先,必须明确,使用@DataProvider修饰的方法,只负责提供测试数据,而且是测试执行前就确定了的静态数据。该方法必须被其他测试方法引用才意义。
其次,必须强调,使用@DataProvider修饰的方法,其返回的数据类型必须为Object[][]。为什么必须是二维数组呢?其中的一维表示单位测试数据,而另一维表示可以提供多组独立的测试数据,供逐一使用。
@DataProvider
public Object[][] dataMethod() {
return new Object[][] { { "one" }, { "two" } };
}
所以,当@DataProvider修饰的方法提供了多组测试数据时,引用@DataProvider的测试方法,就会被多次执行,每次执行使用@DataProvider的一组测试数据。即@DataProvider修饰的方法中有多少组测试数据,引用@DataProvider的测试方法就会被执行多少次。但是自始至终只有一个测试类的实例,即该实例的一个测试方法被多次执行。
@Test(dataProvider = "dataMethod")
public void testMethod(String param) {
System.out.println("The parameter valu