t.me/atinfo_chat Telegram группа по автоматизации тестирования

WebDriver + TestNG tests in parallel


(Denis Veselovskiy) #1

Каз сделать так счтоб классы запускались паралельно???

 

есть TestNG

в его xml указано suite name="Broadcast" parallel="classes" thread-count="2" verbose="5" 

запускаю из IDEA - вижу что запустилось потока два, но браузер один

 

есть подозрения что это из за кривого обьявления селениума

вот

public static ExtendedDefaultSelenium sel = null;

 

WebDriver driver = new FirefoxDriver(firefoxProfile);
        sel = new ExtendedDefaultSelenium(driver, browser_host, new File("."));

WebDriver driver = new FirefoxDriver(firefoxProfile);

sel = new ExtendedDefaultSelenium(driver, browser_host, new File("."));

и работа уже идет с обьектом sel.

 

Кто что думает?


(Дмитрий Жарий) #2

Static не потокобезопасен.  Когда вы создаете член класса с таким модификатором, то при любом обращении к нему, из любого потока, из любого нового экземпляра класса, будет модифицироваться одна и та же ячейка памяти.

Если Вы все равно создаете новый екземпляр Селениума в тесте, то просто уберите static:

public ExtendedDefaultSelenium sel

 

Если же вы создаете екземпляр Селениума вне теста, то тут Вам будет необходимо реализовать более сложный код. Для этого используют паттерн Singleton.


(Mykhailo Poliarush) #3

я бы рекомендовал использовать Singelton паттерн.


(gam) #4

 синглтон основан на статик инстансе, что противореит вышеописанной проблеме потокобезопасности