Здравствуйте!
Несколько месяцев назад я начала новый проект автомации на основе архетипа (Алексея Баранцева) используя TestNG. Проект очень вырос и потребовалось запускать его хотя бы в трех threads.
Сразу началась путаница в логах и скриншотах между тестами. Вначале проблема была в использовании static (особенно в log4j) и я вытерла почти все упоминания static в проекте :-) Это сразу же помогло, но когда количество тестов опять выросло, проблема вернулась. Логи работают хорошо, но скриншоты путаются и тесты падают в непонятный местах (там где при непараллельном пробеге они отлично проходят)...
И там проблема решилась после двух шагов. Первый - снятие скриншотов делать в @AfterMethod. Второй - убрать все @After и @Before из супер класса тестов - в сами тесты:
1) eliminate the listener, and take all screenshots in the @AfterMethod. 2) Move the @Before/After Method/Test methods into the child classes, but simply call methods in the parent to do all the work. Another thing I noticed is that for #2, TestNG is supposed to run the parent '@Before' methods then the child '@Before' methods; and then at the end run the child '@After' methods and then the parent '@After' methods. I ran a series of simple tests, I found that all before/after methods were not being run, so for the few cases where I was using @Before and @After methods in both parent and child, I consolidated. Things seem to run much better now, the driver does not get confused, and screenshots are being attached to the correct browser/test.
Мне очень не хотелось бы это делать. Для первого шага надо изучить testNG rules, чтобы знать когда тест упал. (Сейчас тест сам зовет функцию скриншотов из super-class когда падает). Второй шаг еще хуже - функция супера @BeforeClass, которая инициализирует WebDriver, хелперы и остальное - ее размножать для каждого теста (!) - по-моему не стоит.
Намного легче перевести проект в JUnit где таких проблем нет (наш второй проект бежит с JUnit на 26 threads не делая никакой путаницы).
Может кто-то сталкивался с подобной проблемой? Любые советы приветствуются!
Спасибо!