Как заставить TestNG создать новый экземпляр тестового класса для каждого метода, если режим запуска параллелен = "методы"

Как заставить TestNG создать новый экземпляр тестового класса для каждого метода, если режим запуска parallel="methods"?

JUnit делает это автоматически, но TestNG повторно использует один и тот же экземпляр между методами.

Есть ли возможность изменить это поведение?

Я запускаю тесты selenium и создаю webdriver в методе @BeforeMethod и сохраняю его в переменной класса, чтобы использовать его в методах тестирования и закрываем на @AfterMethod.

И я хочу иметь возможность одновременно запускать методы одного тестового класса без совместного использования webdriver.

Ответ 1

Невозможно заставить testng сделать это. Решение состоит в том, чтобы установить экземпляр webdriver в переменную threadlocal. Что бы это помогло, так это создание одного объекта webdriver для каждого потока, если вы хотите получить переменную. Давал бы этот объект потока.

Ответ 2

Оформить заказ Factory

Из javadoc:

Marks a method as a factory that returns objects that will be used by TestNG as Test classes. The method must return Object[].

Ответ 3

Я использовал TestNG для параллельной работы нескольких тестов selenium webdriver. Чтобы настроить новый WebDriver для каждого метода, используйте @DataProvider annotation и связанный с ним атрибут в аннотации @Test.