Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- http://joxi.ru/1A5zNxjuKeljxr
- /*
- попробуй склонировать свой проект из репозитория в новую папку
- будут проблемы с пекеджами)
- что-то не выгрузил таки в репозиторий
- мне пришлось повозиться - чтоб таки запустить твой проект)
- а должно быть так - склонировал себе проект и уже можешь с ним работать)
- */
- ********************************************************
- public class BaseTest {
- @Rule
- public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
- /*
- довольно странный выбор для имени переменной -
- если мы объявляем правило = формировать скриншоты после каждого теста
- но - не буду придираться - и в примере документации именно так )
- только вот эта строчка - обеспечивает
- что в папке проекта build/reports/tests будут для каждого тест-метода - скриншоты
- для этого - более ничего не надо писать, только объявить вот это правило
- если этого достаточно - запросто можно использовать такой вариант
- http://ru.selenide.org/documentation/screenshots.html
- тут есть про это
- но нам надо больше)
- нам надо приаттачить скриншот к алюр-репорту после каждого из тестов)
- */
- @Before
- public void clearScreenshotList(){
- Screenshots.screenshots.getScreenshots().clear();
- }
- /*
- Screenshots.screenshots.getScreenshots() - это список сделанных скриншотов
- автоматически скриншоты Selenide делает при падении тестов
- и мы чистим этот список перед запуском каждого из тестов - чтобы
- после теста не приаттачить скриншот, сделанный для предыдущего теста
- а так - по состоянию на конец теста - будут только скриншоты - выполненные за время выполнения
- текущего тест-метода
- при выше объявленном правиле - Selenide также будет автоматически делать скриншот по окончании тестов
- правда, есть нюанс)
- */
- @After
- public void tearDown() throws IOException {
- File lastSelenideScreenshot = Screenshots.getLastScreenshot();
- /*
- в этот момент - еще не будет скриншота, который согласно выше объявленному правилу
- должен создаваться после выполнения каждого из тест-методов
- в этот момент - в списке будут только скриншоты, выполненные по причине ошибок
- соответственно - поэтому мы не получим нужного нам результата -
- нечего еще аттачить) при успешном выполнении теста
- как я это узнала
- запускала тест в отладке и смотрела - что когда вызывается)
- очень нужный навык
- */
- *********************
- /*
- какие у нас есть варианты
- если нам надо решить задачу = приаттачить скриншот только при падении тестов -
- то вариант с использованием getLastScreenshot() - хороший вариант
- практически - все как утебя - только убери
- @Rule
- public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
- если нам надо приаттачить скриншот к каждому тесту - используй takeScreenshotAsFile
- и реализацию класса-предка, аналогичную показанной в видео
- тоже - тут тебе не понадобится строка
- @Rule
- public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
- если достаточно - что скриншоты будут в папке проекта build/reports/tests
- то как раз только такая строка тебе и нужна
- @Rule
- public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
- если хочется именно используя правило
- @Rule
- public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
- реализовать приаттачивание скриншота к алюр-репорту
- то придется разобраться - как работают правила @Rule
- и как работают классы ScreenShooter и его предок TestWatcher
- чтобы отнаследоваться от ScreenShooter и в его рамках реализовать
- нужную тебе функциональность
- почему так - почему мы не можем комбинировать Rule и логику After-метода - выше написала
- */
- *****************************
- /*
- pom.xml
- у меня были проблемы - с использованием тех версий, что ты подключил
- команда mvn site - выполнялась с ошибками
- я использовала вариант, который уже проверен)
- ниже - приведу
- в результате - http://joxi.ru/82QYoQyI1e0PP2
- допускаю - что есть комбинации и поновее
- или что у тебя все ок с текущими версиями
- пишу на всякий случай - вдруг не ок)
- вот тут все максимально точно
- http://wiki.qatools.ru/display/AL/Allure+Maven+Plugin
- тут - важные моменты по версиям есть (например, какая версия мавена требуется)
- и смотрю вот сюда
- https://github.com/allure-examples
- может - не самые свежие, но точно рабочие комбинации я там нахожу)
- */
- <properties>
- <allure.version>1.4.11</allure.version>
- <aspectj.version>1.8.5</aspectj.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.codeborne</groupId>
- <artifactId>selenide</artifactId>
- <version>3.9</version>
- </dependency>
- <dependency>
- <groupId>ru.yandex.qatools.allure</groupId>
- <artifactId>allure-junit-adaptor</artifactId>
- <version>${allure.version}</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.19.1</version>
- <configuration>
- <argLine>
- -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
- </argLine>
- <properties>
- <property>
- <name>listener</name>
- <value>ru.yandex.qatools.allure.junit.AllureRunListener</value>
- </property>
- </properties>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
- </dependencies>
- </plugin>
- </plugins>
- </build>
- <reporting>
- <excludeDefaults>true</excludeDefaults>
- <plugins>
- <plugin>
- <groupId>ru.yandex.qatools.allure</groupId>
- <artifactId>allure-maven-plugin</artifactId>
- <version>2.0</version>
- </plugin>
- </plugins>
- </reporting>
Advertisement
Add Comment
Please, Sign In to add comment