是否可以在单个但参数化的测试之前执行一次方法?

时间:2014-07-10 08:14:01

标签: java testng

所以我有使用TestNG测试用户界面的Selenium测试,但是现在我正在努力解决问题:如何在参数化测试之前执行特定方法一次? 我有一个像这样的参数化测试:

@Test(dataProvider="myProvider")
public void testMyThingToTest() {
   // Things to test in here
}

我的参数化测试效果很好,并且对于给定的每个参数执行一次。现在我的初始化对我的参数化测试的所有实例都是通用的,所以我希望它只运行 ,而不是参数化测试的每个实例之前... 如果我喜欢使用@BeforeTest或@BeforeMethod:

@BeforeMethod
public void initialization() {
    // The initialization phase here...
}

init方法在每次测试之前运行...任何想法如何实现? 这样做的目的是避免为每个参数做一些压倒性的工作,因为我的初始化需要30秒,我的测试有7-8个参数,所以我宁愿初始化时间 30sec * 1 而不是 30秒* 8

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您只想对测试类中的所有测试执行一次方法。

TestNG为@BeforeClass提供注释:注释在运行当前测试类的第一个方法之前运行的方法。

您可以在http://java.dzone.com/articles/testng-beforeclass-annotation

找到示例

答案 1 :(得分:1)

尝试

@BeforeSuite
public void initialization() {
    // Init suite
}

如果您想要其他方案。选择具有以下优先级的注释: @BeforeSuite> @BeforeTest> @BeforeClass> @BeforeMethod

答案 2 :(得分:1)

在dataprovider中调用函数

@DataProvider
public Object[][] FeederOfResponseCodes()
{
        initialization();

        return new Object[][]
        {
        };
}