Распределение тестов Selenium Grid DriverSafe

Я настроил сетку, как указано в этом сообщении. . Кроме того, у меня настроены тестовые классы, как в этом сообщении.

Поскольку я хотел, чтобы каждый driverInstance использовал свои собственные someController и 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, чтобы вернуть локальный экземпляр каждого из них?


person startedFromTheBottom    schedule 17.12.2014    source источник
comment
Итак, у вас есть вопрос?   -  person SiKing    schedule 17.12.2014
comment
Извиняюсь, только что добавил вопрос   -  person startedFromTheBottom    schedule 17.12.2014