всем.В настоящее время пишем небольшую инфраструктуру автоматизации BDD Test, используя Java11 + Junit5 + Cucumber + Selenium, инструмент для сборки: Graddle.Создан небольшой тест для проверки названия Google.При запуске теста, используя Test task
в Graddle или класс CucumberRunner
, в обоих случаях получается один и тот же результат: два раза выполняется метод @Before
, один раз выполняется метод @After
и одно окно браузера остается открытым.После добавления еще одного теста, такая же ситуация, только 4 браузера открыты, 2 из них закрываются.Может ли кто-нибудь помочь в этой ситуации?
Ссылка на репозиторий
После некоторого просмотра логов увидел, что, кажется, @Before не выполняется дважды, ноDriver
класс инициализируется дважды, но почему это не происходит, пока не известно ...
Мой код сейчас: CucumberRunner.java
:
@RunWith(Cucumber.class )
@CucumberOptions(
features = "src\\test\\java\\features",
glue = {"steps", "utils"},
tags = "@smoke")
public class CucumberRunner {
}
Driver.java
:
public class Driver {
private WebDriver driver;
public Driver(){
driverInitialization();
}
private void driverInitialization(){
System.setProperty("webdriver.chrome.driver", "D:\\Soft\\selenium-drivers\\chromedriver.exe");
System.out.println("Starting driver.");
var browserName = "chrome";
switch (browserName.toLowerCase()){
case "chrome":
System.out.println("Starting chrome");
driver = new ChromeDriver();
System.out.println("Before break.");
break;
case "firefox":
driver = new FirefoxDriver();
break;
default:
throw new NotFoundException("Browser not found: " + browserName);
}
}
public WebDriver getDriver(){
return driver;
}
public WebDriverWait getWebDriverWait(){
return new WebDriverWait(driver, 120);
}
public void terminateDriver(){
System.out.println("Terminating driver.");
if (driver != null) {
driver.close();
driver.quit();
}
}
}
Hooks.java
:
public class Hooks {
private Driver driver;
@Before
public void setup(){
System.out.println("In the Setup method.");
driver = new Driver();
}
@After
public void tearDown(){
System.out.println("In the TearDown method.");
driver.terminateDriver();
}
}