Я пытаюсь запустить параллельные тесты для настройки файла комплекта. Тесты предназначены для веб-приложений, использующих Selenium. Файл пакета состоит из нескольких тестов. Каждый тест содержит более одного тестового класса. Первый класс в каждом тесте используется для инициализации (@BeforeTest) WebDriver и его отключения (@AfterTest). WebDriver является статическим для того, чтобы передать его другим классам (причина в том, что нам нужно продолжить тестирование с момента окончания последнего класса тестирования).
Тесты успешно выполняются, когда пакет настроен для последовательного запуска тестов. Но когда пакет настроен для параллельного запуска тестов, все тесты набора используют только последний загруженный веб-драйвер, и каждый тест не выполняется в соответствующем браузере.
Ты хоть представляешь, как мне преодолеть эту ситуацию?
Проверьте шаблон набора ниже:
<suite name="Register and Login functionality" parallel="tests" thread-count="2">
<test name="Test-1">
<parameter name="browser" value="chrome" />
<classes>
<class name="Init" />
<class name="Register" />
<class name="Login" />
</classes>
</test>
<test name="Test-2">
<parameter name="browser" value="chrome" />
<classes>
<class name="Init" />
<class name="Register" />
<class name="Login" />
</classes>
</test>
</suite>
Шаблон из тестового класса Init:
public class Init{
private static WebDriver driver;
public WebDriver getWebDriver(){
return this.driver;
}
@BeforeTest
public void setUp(){
driver = new ChromeWebDriver();
}
@AfterTest
public void quit(){
driver.stop();
}
}
Шаблон из регистра тестового класса:
public class Register{
private WebDriver driver;
@BeforeClass
public void setUp(){
driver = Init.getWebDriver();
}
@Test
public void test1(){
........
........
}
@Test
public void test2(){
........
........
}
}
Шаблон из логина test-class:
public class Login{
private WebDriver driver;
@BeforeClass
public void setUp(){
driver = Init.getWebDriver();
}
@Test
public void test1(){
........
........
}
@Test
public void test2(){
........
........
}
}