首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在TestNG的@工厂中创建一个新的套件吗?

我可以在TestNG的@工厂中创建一个新的套件吗?
EN

Stack Overflow用户
提问于 2011-10-25 19:53:08
回答 1查看 1K关注 0票数 0

我有一个带有TestNG注释的类,它在网站上运行功能测试,我首先定义了一个浏览器类- simple POJO:

代码语言:javascript
运行
复制
class Browser {
   private String browserName;
   private String browserVersion;
   private String platform;

...getters and setters and constructor...
}

现在TestNG注解的类本身:

代码语言:javascript
运行
复制
class BrowserTest {

public BrowserTest(Browser b) {
    ...
    create browser session, etc. (uses Selenium Grid underneath)
    ...
}

@Test
public void login() {
    ...test login...
}

@Test
public void logout() {
    ...test logout...
}

@Factory
public Object[] create() throws Exception {

    List<Object> testList = new ArrayList<Object>();
    Browser[] browsers = {
        new Browser("google-chrome", "", ""),
        new Browser("firefox", "", ""),
        new Browser("internet-explorer", "9", ""),
    };

    //Create new instance of this class for each browser

    for (Browser b: browsers) {
        testList.add(new BrowserTest(b));
    }

    return testList.toArray();

    }
}

上面的@Factory方法运行良好,我创建了多个BrowserTest类的实例,每个实例都是用不同的浏览器初始化的,TestNG将在包含第一个BrowserTest实例的同一套件中运行。

我想知道是否有可能为每个新的类实例创建一个新的套件,或者更好的是,TestNG是否提供了一个顶层机制来在套件级别操作对象(afaik @Factory方法只在类级别工作)-这样我就可以通过编程创建新的套件实例,每个实例都被初始化为使用不同的浏览器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-26 00:19:53

@Factory只适用于测试级别,所以您的问题的答案是否定的。

但是,您可以使用TestNG的XML创建新的套件,它通过创建testng.xml文件的内存版本在更高的级别上工作。查找XmlSuiteXmlTest等...类。如果这样做,您可能根本不再需要@Factory,因为您可以直接实例化测试类,然后将它们包含在使用XmlTest创建的<test>标记中。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7888854

复制
相关文章

相似问题

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