我已经设置了这篇文章中提到的网格。另外,我在这篇文章中设置了测试类。
因为我希望每个driverInstance
人都使用自己的someController
and someData
,所以我改变了BaseTest
如下:
public abstract class BaseTest {
String testFolder;
String testName;
protected String envName;
protected Configuration config;
protected String host;
protected RemoteWebDriver driver;
protected String proxy;
protected SomeData someData;
protected SomeController someController;
public BaseTest() {
}
public BaseTest( String testFolder, String testName)
{
this.testFolder = testFolder;
this.testName = testName;
this.envName = System.getProperty("config");
this.proxy = System.getProperty("proxy");
config = this.envName;
}
@BeforeMethod
public void startTest(Method testMethod) {
try {
this.someData = SomeDataSetup.getSafeSomeData(new SomeData());
this.driver = WebDriverSetup.getDriver();
this.someController = SomeController.getSafeSomeController(new someController(this.driver, this.someData));
driver.navigate().to("https://" + this.host);
} catch (MalformedURLException e) {
System.out.println("MalformedURLException");
}
}
@AfterMethod
public void closeWindow() {
driver.close();
driver.quit();
}
}
为了获取每个单独的实例,我创建了以下类
public class SomeDataSetup {
public static SomeData getSafeSomeData(SomeData someDataSet ) {
ThreadLocal<SomeData> someData = null;
someData = new ThreadLocal<SomeData>();
someData.set(someDataSet);
return someData.get();
}
}
类似的事情someController
。以下测试将使用它自己的 , 实例,someData
如下所示。someController
driver
TestClass
public class Tests extends BaseTest {
//This is used to do some setup in the super class
@Parameters({"testName", "env" })
public Tests( @Optional String testName, @Optional String env ) {
super( null, testName, null, env );
}
@BeforeMethod
public void setup() throws Exception {
try {
SomeData someData;
SomeController someController;
RemoteWebDriver driver;
this.someData = SomeDataSetup.getSafeSomeData(new SomeData());
this.driver = super.driver;
this.someController = SomeControllerSetup
.getSomeController(new SomeController(
this.driver, this.someData));
this.driver.navigate().to("https://" + this.host);
}
public void test1() throws Exception {
use driver from super
use someData from super
use someController is using the driver from super
}
public void test2() throws Exception {
use driver from super
use someData from super
use someController is using the driver from super
}
这是获取每个 someData、someController 或驱动程序的线程安全实例的好方法,还是可以在 BaseTest 本身中完成一些操作以返回每个这些的 threadlocal 实例?