Далее с помощью allure-cli генерирую отчет, создается папка allure-reports..png лежит в папке data. Поэтому я прихожу к выводу, что в отчете все должно отображаться. Но я не пойму куда в отчете смотреть чтобы увидеть скриншот? Спасибо.
Действительно работает, только не пойму, функционал же одинаковый. Только в testng.xml слушатель распространяется на все классы, а через аннотацию @Listeners только на определенный класс, верно?
@Listeners({ElementScreenshot.class})
public class TestKaraoke extends ConfigBase{
@Test
public void createKaraokeWithFillForm() throws Exception{
User user = new User().setLogin("admin").setPassword("admin");
}
}
***
public class User {
private String login;
public User setLogin(String login) {
this.login = login;
assertTrue(0==1);
return this;
}
Слушатель все равно срабатывает, хотя мы указали его в тестовом классе. Поэтому появляются 2 вопроса. Как работает слушатель через аннотацию?
Через аннотацию слушатель подключается как только мы обращаемся к классу где он указан и следит до конца выполнения программы?
Или слушатель следит за 1 классом где мы его указали и при выполнении условий именно в этом классе, он срабатывает? Но почему тогда он сработал если assert у нас находится в другом классе.
Я со слушателями только недавно начал знакомиться, поэтому буду благодарен за ответ.
Слушатель слушает тест в данном случае и срабатывает “onTestFailure”.
Так как у вас вызов класса User в методе над которым стоит аннотация “Test” то он естественно будет срабатывать.
allure-result создает 2 одинаковых xml файла. Ответ есть в другой теме, но там говорится, что слушатели подключаются с 1.4. только через сервисы и надо убрать их из pom. Или я не правильно подключаю слушатель?
Тонкостей подключения слушателей через Allure я не знаю. Я лишь высказал общую идею, что maven-surefire-plugin позволит вам это сделать, наряду с testng.xml / аннотацией в классе.
А я что-то не заметил, как из самого вопроса обсуждение перетекло в листенеры
Если брать вопрос из темы - отчет будет прилинкован как аттач к тесту или шагу, внутри которого вы вызвали метод.
В вашем случае, метод onTestFailure является всё еще продолжением теста, так что Вы должны увидеть аттач к тест кейсу.
И лучше перейдите на новый аллюр, там аннотация поменялась на @Attachment.
Будет примерно так:
@Attachment(value = "Снимок ''{0}''", type = "image/png")
И лучше, чтоб метод возвращал массив байтов(это советуют сами разработчики аллюра)