我想使用@Beforeclass
进行一些测试数据设置,并在@DataProvider
中使用它。
是否可以保证@Beforeclass
在@DataProvider
之前执行?
是的,@BeforeClass
和@BeforeSuite
将在@DataProvider
中的TestNG
之前执行。
您可以参考testNG documetation
@BeforeSuite:带注释的方法将在该套件中的所有测试运行之前运行。
@BeforeClass:带注释的方法将在调用当前类中的第一个测试方法之前运行。
尽管它不清楚是否可以在@DataProvider
之前执行,但我已经创建了示例测试
public class SeleniumJava {
Object[][] testData;
@DataProvider
public Object[][] data() {
System.out.println("In @DataProvider");
return testData;
}
@BeforeClass
public void setData() {
System.out.println("in @BeforeClass");
testData = new String[][]{new String[]{"data1"},new String[]{"data2"}};
}
@Test(dataProvider = "data")
public void printData(String d) {
System.out.println(d);
}
}
################# 输出量 #################
在@BeforeClass
在@DataProvider中
data1
data2
希望这会回答您的问题。
快乐编码〜
,是的,保证@BeforeClass 在@DataProvider 之前执行。 @BeforeClass 在类级别被编译器看到,而@DataProvider 在方法级别被编译器看到。