7

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

似乎有时会@DataProvider先运行,有时@BeforeClass不会?

有人知道原因吗?

4

3 回答 3

4

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

于 2010-09-23T12:16:02.697 回答
3

请在下面找到执行顺序:

@BeforeSuite
@BeforeTest
@BeforeClass
@DataProvider
@BeforeMethod
@AfterMethod
@AfterClass
@AfterTest
@AfterSuite
于 2018-08-07T06:38:36.710 回答
0

@课前

BeforeClass annotation方法在第一个测试方法之前只运行一次。Current Class 方法将是从中调用它的方法。

@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"}};
    }
}

输出:

  • 在课前
  • DataProvider 数据(五、五)
  • DataProvider 数据(6、6)
于 2018-08-07T06:55:54.707 回答