如何使用在不同類中設置的ThreadLocal值?通過做在不同的類中獲取ThreadLocal變量 - Java - Selenium WebDriver
ThreadLocal<String> username = new ThreadLocal<String>();
username.set("user");
ThreadLocal<String> password = new ThreadLocal<String>();
password.set("pass");
我知道如何從同一個類中的「獲取」他們:
例子,我設置A類這些變量
String myUsername = username.get();
String myPassword = password.get();
但我無法找到任何關於如何使用/讓他們在B類?
基本的最終目標是我試圖將我的Selenium WebDriver測試轉換爲並行運行。這些文本值將被輸入到一個類(A)中,但是接下來我有另一個類(B),其中包含需要知道該類的「方法」(調用數據庫條目,驗證屏幕數據等)在(A)類中輸入的數據。
我成功地做這行非ThreadLocal的變量的方法是這樣的:
坐落在A類的值:
@Test (priority = 1)
public void enterData() {
String environment = "QA";
// Pass environment to stored variables
StoredVariables newEnv = new StoredVariables();
newEnv.setEnv(environment);
driver.enterData;
}
儲存於B類(StoredVariables):
public class StoredVariables {
private static String environment = "";
public StoredVariables() {
}
public static String getEnv() {return environment;}
public void setEnv(String s) {environment = s;}
}
訪問從C類:
@Test (priority = 1)
public void verifyData() {
String environment = StoredVariables.getEnv();
}
我認爲threadlocal並不是在類之間共享數據的最佳工具。您能否解釋一下您嘗試使用threadlocals解決的問題? –
簡單版本是我試圖將我的Selenium WebDriver測試轉換爲並行運行。這些文本值將被輸入到一個類(A)中,但是接下來我有另一個類(B),其中包含需要知道該類的「方法」(調用數據庫條目,驗證屏幕數據等)在(A)類中輸入的數據。 –
JUnit或testNG? –