【发布时间】:2019-02-21 22:32:04
【问题描述】:
对所有人。
目前在写一个小小的BDD Test自动化框架,使用Java11+Junit5+Cucumber+Selenium,构建工具:Graddle。为验证 Google 标题创建了一个小测试。开始测试时,在 Gradle 中使用Test task 或运行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();
}
}
【问题讨论】:
-
我也对此感兴趣。同样的事情发生在我身上,由于我是 Cucumber 的初学者,我怀疑我可能做错了什么。
-
伙计们,您应该在任何 Git 平台(Github)上分享您的项目,以便其他人可以看到有助于他们理解和解决您的问题的完整代码。完成后,请在上面的问题中添加您的项目链接。
-
@ABD,添加到存储库的链接。
标签: selenium-webdriver cucumber selenium-chromedriver junit5 cucumber-junit