StepListener для Аллюра2, проблема с добавлением инфы в конец шага

testng
allure
java
Теги: #<Tag:0x00007f3d44fde138> #<Tag:0x00007f3d44fddf30> #<Tag:0x00007f3d44fddda0>

(Vasiliy Rakshin) #1

Написал и подключил свой слушатель для шагов. Слушатель работает.
Метод beforeStepStop не хочет ничего аттачить в сам шаг.
Метод afterStepStop аттачит не в шаг, а уже на более высокий уровень, всё в одну кучу.
Метод afterStepStart хорошо аттачит в сам шаг.
Что я делаю не так? Возможно ли что-то приаттачить в конце шага?
Версия аллюра

            <artifactId>allure-testng</artifactId>
            <version>2.0-BETA21</version>

(Sergey Korol) #2

Это баг, судя по исходникам:

Степ удаляется из хранилища до вызова beforeStepStop. Соответственно, атачменту некуда цепляться:

В целом, фикс выглядит простым. Гляну на днях.


(Антон Афтахов) #3

Можете посмотреть примеры листнеров шагов в https://github.com/allure-framework/allure-java/pull/169 (листнер шагов selenide) и http://automation-remarks.com/2017/selenide-allure-2/index.html (тут листнер любых методов без аннотации @Step)


(Vasiliy Rakshin) #4

Сергей, а ещё вопрос.
Собрал я свой проект с тестами в один джарник.
В нём, в метаИНФ есть папка сервисез с моим слушателем для степов (путь к классу слушателя корректный).
При запуске тестов слушатель для степов не подключился, в чём может быть проблема?


(Sergey Korol) #5

А есть скрин структуры jar со слушателем? Дабы исключить какие-то ошибки по невнимательности... Еще не ясно, как и чем запускается jar, на какой версии java / allure адптера и т.п.

П.С. Касательно оригинальной проблемы: фикс оказался не таким простым, как казалось. Там есть проблема еще и в lifecycle, который не запоминает id нужного степа при подобном способе взаимодействия. baev в отдельной ветке уже залил апдейт самого ЖЦ. Скорее всего придется вначале дождаться мерджа, а потом уже фиксить эту проблему (если будет еще актуальной).


(Vasiliy Rakshin) #6

Листенер лежит тут

Сервис тут (в нём путь прописан - crmsTFW.listeners.StepListener)

Локально запускаю через мавен (clean install и запускается Xml c тестами плагином maven-surefire-plugin), листенер подключается, всё корректно работает (в консольке отображаются степы, в отчете тоже).
На другой машине уже собранный jar запускается командой > java -cp crms-web-test-0.1-fat-tests.jar org.testng.TestNG -xmlpathinjar testng-empty.xml -testjar crms-web-test-0.1-fat-tests.jar
Тест корректно запускается, отчет аллюровский формируется, но листенер для степов уже не работает.
СДК последний 8, allure-testng - 2.0-BETA21, testng - 6.13.1

кому интересно - сделал небольшой проект https://yadi.sk/d/Rt8zwHpj3R5ReM


(Sergey Korol) #7

Так если слушатель подключен на уровне maven-surefire-plugin, логично, что это не будет работать в случае консольного запуска средствами TestNG. Нужно либо подключать слушателя на уровне xml / кода, либо использовать -listener флаг.


(Vasiliy Rakshin) #8

Для аллюра же слушатель для шагов подключается с помощью SPI. Локально оно и работает.
Он имплементит StepLifecycleListener, разве такой слушатель подключается в ТестНГ?


(Sergey Korol) #9

Да, это меня не в ту степь понесло. Подумал о testng слушателе в контексте рассмотрения другой задачи. Для Allure SPI юзается, все верно.

Хорошо, гляну тогда пример проекта на досуге.