【问题标题】:Do methods annotated with @BeforeClass and @BeforeSuite execute before @DataProvider in TestNG?在 TestNG 中,使用 @BeforeClass 和 @BeforeSuite 注释的方法是否在 @DataProvider 之前执行?
【发布时间】:2020-07-14 03:54:35
【问题描述】:

我想用@BeforeClass做一些测试数据设置并在@DataProvider中使用。

是否保证@BeforeClass@DataProvider 之前执行?

【问题讨论】:

    标签: testng testng-eclipse


    【解决方案1】:

    是的,@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
    

    【讨论】:

      【解决方案2】:

      是的,保证@BeforeClass 在@DataProvider 之前执行。 @BeforeClass 由编译器在类级别看到,而@DataProvider 由编译器在方法级别看到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-23
        • 2020-01-16
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        • 2020-03-01
        • 2013-11-18
        相关资源
        最近更新 更多