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

Остановить TestNG после прохождения тестов


(Rommy1204) #1

Добрый день! Столкнулся со следующей проблемой:
Тесты написаны на фреймворке TestNG и запускаются через xml параллельно в двух браузерах.
Из IDE (Eclispe) все работает отлично.

Но возникла необходимость передать тесты в другую систему для CI
для этого я добавил в класс с тестами метод main (иначе runuble jar не создать)
и запускаю в нем программно testng.xml следующим образом:

public static void main(String[] args) throws Exception {
    Dataxml.DataFromXml();
   TestNG testNG = new TestNG(true);
   //Парсим xml файл, делаем запуск тестов через suite/xml
   Parser parser = new Parser("Data/testng.xml");
   List<XmlSuite> suites = parser.parseToList();
   testNG.setXmlSuites(suites);
   //Добавляем листенер к тестам
   MyListener myListener = new MyListener();
   testNG.addListener(myListener);
   //запускаем тесты
   testNG.run();
}

тесты проходят успешно, все казалось бы также. Но после прохождения тестов, запускаемых из xml'ки работа testNG прекращается
А после прохождения тестов, запускаемых main методом - нет
Тесты проходят, браузеры закрываются, отчет отсылается, в консоль выводится стандартный результат Suite, но процесс не останавливается (сколько не жди)

Как быть? Никто не сталкивался?
Временное решение - System.exit(0);

 


(Rommy1204) #2

 

Нашел решение, оказалось что многопоточность явно не убивается, есть 3 варианта решения:
1. System.exit(0);
2. Убить процесс (более мягкий способ)
3. Найти специальные вещи для многопоточного завершения процессов вебдрайвера (в процессе)