【发布时间】:2021-04-08 23:28:48
【问题描述】:
对不起,如果这个问题听起来很愚蠢。 我们正在开发一个使用 Java、Cucumber、Junit 和 Failsafe 套件等的自动化框架。 有人建议使用 ThreadLocal。但是我有点困惑,为什么当 Junit 在自己的线程中运行黄瓜功能时我们需要使用 ThreadLocal..
建议是使用ThreadLocal,如下所示;-
public class WebDriverFactory {
private static ThreadLocal<WebDriver> driver = new ThreadLocal<>();
public static synchronized void setDriver(String browser) {
switch (browser) {
case "chrome":
driver = ThreadLocal.withInitial(() -> {
WebDriverManager.chromedriver().setup();
return new ChromeDriver(BrowserOptions.getChromeOptions());
});
break;
default:
throw new IllegalStateException("Unexpected value: " + browser);
}
}
public static synchronized WebDriver getDriver(){
return driver.get();
}
任何人都可以确认这是否真的需要并行运行测试。?另外,使用 ThreadLocal 时是否需要“同步”?
【问题讨论】:
标签: java multithreading selenium automated-tests thread-local