用@BeforeClass和@BeforeSuite注释的方法是否在TestNG中的@DataProvider之前执行?

我想使用@Beforeclass进行一些测试数据设置,并在@DataProvider中使用它。

是否可以保证@Beforeclass@DataProvider之前执行?

iCMS 回答:用@BeforeClass和@BeforeSuite注释的方法是否在TestNG中的@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 在方法级别被编译器看到。

本文链接:https://www.f2er.com/1941539.html

大家都在问