Могу ли я создать новый пакет в @Factory в TestNG? - PullRequest
0 голосов
/ 25 октября 2011

У меня есть класс с аннотациями TestNG, который выполняет функциональные тесты на веб-сайте, сначала я определяю класс Browser - простой POJO:

class Browser {
   private String browserName;
   private String browserVersion;
   private String platform;

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

, а теперь сам аннотированный класс TestNG:

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 предоставляет механизм верхнего уровня для управления объектами на уровне набора (на самом деле, метод @Factory работает только на уровне класса).) - чтобы я мог программно создавать новые экземпляры набора, каждый из которых инициализировался для использования другого браузера.

1 Ответ

0 голосов
/ 25 октября 2011

@Factory работает только на тестовом уровне, поэтому ответ на ваш вопрос - нет.

Однако вы можете создавать новые пакеты с XML-интерфейсом TestNG, который работает на более высоком уровне, создаваяверсии памяти вашего файла testng.xml.Посмотрите классы XmlSuite, XmlTest и т. Д.Если вы пойдете по этому пути, вам, вероятно, больше не понадобится @Factory, поскольку вы можете напрямую создавать экземпляры тестовых классов и затем включать их в тег <test>, созданный с помощью XmlTest.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...