使用 Cucumber、Jmeter 和 FailSafe 的自动化框架是否需要 ThreadLocal?

问题描述

对不起,如果这个问题听起来很愚蠢。 我们正在开发一个使用 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 时是否需要“同步”?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)