首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个参数化测试之前执行一次方法是可能的吗?

在单个参数化测试之前执行一次方法是可能的吗?
EN

Stack Overflow用户
提问于 2014-07-10 08:14:00
回答 3查看 2K关注 0票数 2

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

代码语言:javascript
复制
@Test(dataProvider="myProvider")
public void testMyThingToTest() {
   // Things to test in here
}

我的参数化测试非常有效,并且对给定的每个参数执行一次。现在我有了一个对参数化测试的所有实例通用的初始化,所以我希望它只运行一次,而不是在之前运行参数化测试的每个实例.如果我使用@BeforeTest或@BeforeMethod这样的操作:

代码语言:javascript
复制
@BeforeMethod
public void initialization() {
    // The initialization phase here...
}

init方法在每次测试之前运行.知道怎么做到吗?这样做的目的是避免为每个参数做大量的工作,因为我的初始化大约需要30秒,而且我有7-8个参数进行测试,所以我宁愿初始化时间为30秒* 1,而不是30秒* 8。

EN

回答 3

Stack Overflow用户

发布于 2014-07-10 08:37:02

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

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

你可以在http://java.dzone.com/articles/testng-beforeclass-annotation找到一个例子

票数 2
EN

Stack Overflow用户

发布于 2014-07-10 08:40:42

试一试

代码语言:javascript
复制
@BeforeSuite
public void initialization() {
    // Init suite
}

如果你想要其他场景的话。选择具有以下优先级的注释:@BeforeSuite > @BeforeTest > @BeforeClass > @BeforeMethod

票数 1
EN

Stack Overflow用户

发布于 2016-12-20 18:49:52

数据提供者中的调用函数

代码语言:javascript
复制
@DataProvider
public Object[][] FeederOfResponseCodes()
{
        initialization();

        return new Object[][]
        {
        };
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24671500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档