julia_v_iluhina

Untitled

Oct 2nd, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.38 KB | None | 0 0
  1. http://joxi.ru/1A5zNxjuKeljxr
  2. /*
  3.     попробуй склонировать свой проект из репозитория в новую папку
  4.     будут проблемы с пекеджами)
  5.  
  6.     что-то не выгрузил таки в репозиторий
  7.  
  8.     мне пришлось повозиться - чтоб таки запустить твой проект)
  9.  
  10.     а должно быть так - склонировал себе проект и уже можешь с ним работать)
  11. */
  12. ********************************************************
  13. public class BaseTest {
  14.     @Rule
  15.     public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
  16.     /*
  17.         довольно странный выбор для имени переменной -
  18.         если мы объявляем правило = формировать скриншоты после каждого теста
  19.         но - не буду придираться - и в примере документации именно так )
  20.  
  21.         только вот эта строчка - обеспечивает
  22.         что в папке проекта build/reports/tests будут для каждого тест-метода - скриншоты
  23.         для этого - более ничего не надо писать, только объявить вот это правило
  24.  
  25.         если этого достаточно - запросто можно использовать такой вариант
  26.  
  27.         http://ru.selenide.org/documentation/screenshots.html
  28.         тут есть про это
  29.  
  30.         но нам надо больше)
  31.         нам надо приаттачить скриншот к алюр-репорту после каждого из тестов)
  32.     */
  33.  
  34.     @Before
  35.     public void clearScreenshotList(){
  36.         Screenshots.screenshots.getScreenshots().clear();
  37.     }
  38.     /*
  39.        Screenshots.screenshots.getScreenshots() - это список сделанных скриншотов
  40.        автоматически скриншоты Selenide делает при падении тестов
  41.  
  42.        и мы чистим этот список перед запуском каждого из тестов - чтобы
  43.        после теста не приаттачить скриншот, сделанный для предыдущего теста
  44.        а так - по состоянию на конец теста - будут только скриншоты - выполненные за время выполнения
  45.        текущего тест-метода
  46.  
  47.        при выше объявленном правиле - Selenide также будет автоматически делать скриншот по окончании тестов
  48.        правда, есть нюанс)
  49.     */
  50.  
  51.     @After
  52.     public void tearDown() throws IOException {
  53.         File lastSelenideScreenshot = Screenshots.getLastScreenshot();
  54.         /*
  55.             в этот момент - еще не будет скриншота, который согласно выше объявленному правилу
  56.             должен создаваться после выполнения каждого из тест-методов
  57.  
  58.             в этот момент - в списке будут только скриншоты, выполненные по причине ошибок
  59.  
  60.             соответственно - поэтому мы не получим нужного нам результата -
  61.             нечего еще аттачить) при успешном выполнении теста
  62.  
  63.             как я это узнала
  64.             запускала тест в отладке и смотрела - что когда вызывается)
  65.             очень нужный навык
  66.  
  67.         */
  68. *********************
  69. /*
  70.     какие у нас есть варианты
  71.  
  72.         если нам надо решить задачу = приаттачить скриншот только при падении тестов -
  73.         то вариант с использованием getLastScreenshot() - хороший вариант
  74.         практически - все как утебя - только убери
  75.         @Rule
  76.         public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
  77.  
  78.  
  79.         если нам надо приаттачить скриншот к каждому тесту - используй takeScreenshotAsFile
  80.         и реализацию класса-предка, аналогичную показанной в видео
  81.         тоже - тут тебе не понадобится строка
  82.         @Rule
  83.         public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
  84.  
  85.  
  86.         если достаточно - что скриншоты будут в  папке проекта build/reports/tests
  87.         то как раз только такая строка тебе и нужна
  88.         @Rule
  89.         public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
  90.  
  91.         если хочется именно используя правило
  92.         @Rule
  93.         public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests().succeededTests();
  94.         реализовать приаттачивание скриншота к алюр-репорту
  95.         то придется разобраться - как работают правила @Rule
  96.         и как работают классы ScreenShooter и его предок TestWatcher
  97.         чтобы отнаследоваться от ScreenShooter и в его рамках реализовать
  98.         нужную тебе функциональность
  99.         почему так - почему мы не можем комбинировать Rule и логику After-метода - выше написала
  100.  
  101. */
  102. *****************************
  103. /*
  104.     pom.xml
  105.  
  106.     у меня были проблемы  - с использованием тех версий, что ты подключил
  107.     команда mvn site - выполнялась с ошибками
  108.  
  109.     я использовала вариант, который уже проверен)
  110.     ниже - приведу
  111.  
  112.     в результате - http://joxi.ru/82QYoQyI1e0PP2
  113.  
  114.     допускаю - что есть комбинации и поновее
  115.     или что у тебя все ок с текущими версиями
  116.     пишу на всякий случай - вдруг не ок)
  117.  
  118.     вот тут все максимально точно
  119.     http://wiki.qatools.ru/display/AL/Allure+Maven+Plugin
  120.     тут - важные моменты по версиям есть (например, какая версия мавена требуется)
  121.  
  122.     и смотрю вот сюда
  123.     https://github.com/allure-examples
  124.  
  125.     может - не самые свежие, но точно рабочие комбинации я там нахожу)
  126. */
  127.  
  128.    <properties>
  129.         <allure.version>1.4.11</allure.version>
  130.         <aspectj.version>1.8.5</aspectj.version>
  131.     </properties>
  132.  
  133.     <dependencies>
  134.         <dependency>
  135.             <groupId>com.codeborne</groupId>
  136.             <artifactId>selenide</artifactId>
  137.             <version>3.9</version>
  138.         </dependency>
  139.         <dependency>
  140.             <groupId>ru.yandex.qatools.allure</groupId>
  141.             <artifactId>allure-junit-adaptor</artifactId>
  142.             <version>${allure.version}</version>
  143.         </dependency>
  144.         <dependency>
  145.             <groupId>junit</groupId>
  146.             <artifactId>junit</artifactId>
  147.             <version>4.12</version>
  148.         </dependency>
  149.     </dependencies>
  150.  
  151.     <build>
  152.         <plugins>
  153.             <plugin>
  154.                 <groupId>org.apache.maven.plugins</groupId>
  155.                 <artifactId>maven-surefire-plugin</artifactId>
  156.                 <version>2.19.1</version>
  157.                 <configuration>
  158.                     <argLine>
  159.                         -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
  160.                     </argLine>
  161.                     <properties>
  162.                         <property>
  163.                             <name>listener</name>
  164.                             <value>ru.yandex.qatools.allure.junit.AllureRunListener</value>
  165.                         </property>
  166.                     </properties>
  167.                 </configuration>
  168.                 <dependencies>
  169.                     <dependency>
  170.                         <groupId>org.aspectj</groupId>
  171.                         <artifactId>aspectjweaver</artifactId>
  172.                         <version>${aspectj.version}</version>
  173.                     </dependency>
  174.                 </dependencies>
  175.             </plugin>
  176.         </plugins>
  177.     </build>
  178.  
  179.     <reporting>
  180.         <excludeDefaults>true</excludeDefaults>
  181.         <plugins>
  182.             <plugin>
  183.                 <groupId>ru.yandex.qatools.allure</groupId>
  184.                 <artifactId>allure-maven-plugin</artifactId>
  185.                 <version>2.0</version>
  186.             </plugin>
  187.         </plugins>
  188.     </reporting>
Advertisement
Add Comment
Please, Sign In to add comment