【发布时间】:2020-07-14 03:54:35
【问题描述】:
我想用@BeforeClass做一些测试数据设置并在@DataProvider中使用。
是否保证@BeforeClass 在@DataProvider 之前执行?
【问题讨论】:
标签: testng testng-eclipse
我想用@BeforeClass做一些测试数据设置并在@DataProvider中使用。
是否保证@BeforeClass 在@DataProvider 之前执行?
【问题讨论】:
标签: testng testng-eclipse
是的,@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);
}
}
输出:
in @BeforeClass
In @DataProvider
data1
data2
【讨论】:
是的,保证@BeforeClass 在@DataProvider 之前执行。 @BeforeClass 由编译器在类级别看到,而@DataProvider 由编译器在方法级别看到。
【讨论】: