为什么@DataProvider注释在TestNG中的@BeforeClass之前运行?

时间:2010-09-23 06:39:40

标签: java testng

使用TestNG,为什么@DataProvider会在@BeforeClass之前运行?

似乎有时@DataProvider会在@BeforeClass之前运行,而有时则不会?

有谁知道原因?

3 个答案:

答案 0 :(得分:4)

这就是今天实施的方式,这对你来说是个问题吗?

答案 1 :(得分:0)

请在下面找到执行顺序:

@BeforeSuite
@BeforeTest
@BeforeClass
@DataProvider
@BeforeMethod
@AfterMethod
@AfterClass
@AfterTest
@AfterSuite

答案 2 :(得分:0)

  

@BeforeClass

BeforeClass annotation方法仅在第一种测试方法之前运行一次。当前类方法将被调用。

  

@DataProvider

DataProvider annotation方法返回一个Object [] []类型的值,其中可以将每个Object []分配为要从此DataProvider批注方法接收数据的测试方法的参数。

public class TestNgDataProviderExample {
    @BeforeClass
    public void beforeClass() {
        System.out.println("in beforeClass");
    }
    @Test(dataProvider = "getData")
    public void instanceDbProvider(int p1, String p2) {
        System.out.println("DataProvider Data(" + p1 + ", " + p2 + ")");
    }

    @DataProvider
    public Object[][] getData() {
        return new Object[][] {{5, "five"}, {6, "six"}};
    }
}

输出:

  • 在beforeClass
  • DataProvider数据(5,5)
  • DataProvider数据(6, 六)