问题描述
当我使用 maven 在 jenkins 上运行带有黄瓜 textNg 的测试用例时,有时会出现错误 java.util.concurrent.Ex。我需要使用同步让我的方法正常工作。 我有地图,我必须使用 ThreadLocal,但我不确定如何使用它。你能帮我吗?
private static Map<Integer,WebDriver> webDriverMap = new HashMap<Integer,WebDriver>();
private static Map<Integer,String> browserMap = new HashMap<Integer,String>();
private static Map<Integer,String> scenarioNameMap = new HashMap<Integer,String> featureNameMap = new HashMap<Integer,String> tagNameMap = new HashMap<Integer,String>();
public static Map<String,String> scenarioSteps = new HashMap<String,String>();
public String getbrowser () {
return browserMap.get((int)Thread.currentThread().getId());
}
public static WebDriver getDriver() {
return (WebDriver) webDriverMap.get((int)Thread.currentThread().getId());
}
public static synchronized void startDriver(String browser,String scenarioName) throws Throwable {
webDriverMap.put((int)Thread.currentThread().getId(),initializeDriver(browser,scenarioName));
}
public static synchronized void setScenarioName(String scenarioName) throws Throwable {
scenarioNameMap.put((int)Thread.currentThread().getId(),scenarioName);
}
public static synchronized String getScenarioName() throws Throwable {
return scenarioNameMap.get((int)Thread.currentThread().getId());
}
public static synchronized void setFeatureName(String featureName) throws Throwable {
featureNameMap.put((int)Thread.currentThread().getId(),featureName);
}
public static synchronized String getFeatureName() throws Throwable {
return featureNameMap.get((int)Thread.currentThread().getId());
}
public static synchronized void setTagName(String tagName) throws Throwable {
tagNameMap.put((int)Thread.currentThread().getId(),tagName);
}
public static synchronized String getTagName() throws Throwable {
return tagNameMap.get((int)Thread.currentThread().getId());
}
public static synchronized void setScenarioSteps(String scenario,String steps) throws Throwable {
scenarioSteps.put(scenario,steps);
}
public static synchronized String getScenarioSteps(String scenario) throws Throwable {
return scenarioSteps.get(scenario);
}
public static synchronized void removeFinishedMap() {
webDriverMap.remove((int)Thread.currentThread().getId());
scenarioNameMap.remove((int)Thread.currentThread().getId());
browserMap.remove((int)Thread.currentThread().getId());
featureNameMap.remove((int)Thread.currentThread().getId());
tagNameMap.remove((int)Thread.currentThread().getId());
}
public static void stopDriver() {
getDriver().quit();
webDriverMap.remove((int)Thread.currentThread().getId());
}
Thread.currentThread().getId()
我想我必须改变这个。
public String getbrowser () {
public static WebDriver getDriver() {
public static void stopDriver() {
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)