Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Maven + TestNG + WebDriver многопоточность для Suite


(Dmitriy Karassev) #1

День добрый.

Чувствую, что затрагиваю местами избитую тему. Также понимаю, что у многих участников форума появится желание “сделать все по-другому, более правильно”. В общем, предисловие я сказал, к нападкам готов… сам деликатный момент:

Кол-во сьютов перевалило за 50 штук еще в середине этой весны. Время прогона тестов увеличилось с 2 часов (год назад) до 9 часов на сейчас. Сама система тестирования вылизана и отлажена - работает безупречно. Теперь появилась нужда распараллелить эту кучу кода - тестовая машина имеет отличное железо и спокойно потянет тестирование в 4 потоков (при экспериментах тянула до 6 спокойно). Однако после изучения большого кол-ва материалов в сети на эту тему так и не удалось все правильно собрать. Главная проблема в необходимости параллелить сьюты, а не методы/классы. С этим прекрасно справился этот простой код:

public class MultipleXmls {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
	TestNG testng = new TestNG();
	testng.setXmlSuites((List <XmlSuite>)(new Parser("C:\\Users\\S-Kerrigan\\WSI\\Java_ProjectsM_V.003\\Sets\\Suits\\TEST.xml").parse()));
	testng.setSuiteThreadPoolSize(4);
	testng.run();
}}

В самом Maven запуск класса веду через

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                    <configuration>
                        <mainClass>Test.MultipleXmls</mainClass>
                    </configuration>
                </plugin>

Однако при запуске через мавен теряется вся многопоточность. Как исправить?
*Варианты с хаб/нодами, сторонними нагромождениями дополнительных фреймворков заранее не подходят по ряду причин.


(Sergey Korol) #2

Не хочу разводить дискуссии по поводу целесообразности того, что вы собираетесь сделать. Anyway…

По теме: как говорят здесь, maven-surefire-plugin 2.16 использует деприкейтед версию TestNG.java. Т.е. как вариант, можете попробовать сами пересобрать с учетом приведенного фикса. Как говорят здесь, последняя версия 2.17 должна успешно с этим справляться.

А формирование набора сьютов из кода является как минимум странным.