julia_v_iluhina

Untitled

Nov 11th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.27 KB | None | 0 0
  1. public interface All {
  2. }
  3. /*
  4.     Можно обойтись двумя категориями - buggy & smoke
  5.     для создания 4-ех сьютов
  6. */
  7. *******************
  8. public class ToDoMVCAtAllTest extends BaseTest {
  9.  
  10.     @Test
  11.     @Category({Smoke.class, All.class})
  12.     public void testEditOnAll() {
  13. /*
  14.     тут это нам не пригодится)
  15.     но на будущее - можно аннотировать @Category - и тест-класс
  16.     если все тест-методы этого класса - относятся к какой-то одной категории
  17.     http://junit.org/junit4/javadoc/4.12/org/junit/experimental/categories/Categories.html
  18. */
  19. **********************************
  20. @RunWith(Categories.class)
  21. @Categories.IncludeCategory({Smoke.class, Buggy.class, AllSuiteTest.class})
  22. @Suite.SuiteClasses({ToDoMVCGeneralTest.class, ToDoMVCAtAllTest.class})
  23.  
  24. public class AllSuiteTest {
  25. }
  26. /*
  27.     Если не указывать вообще @Categories.IncludeCategory - то в сьют войдут все тесты
  28.     из перечисленных в @Suite.SuiteClasses
  29.     именно поэтому - можно All категорию и не делать
  30.  
  31.     ты тут,кстати, применяешь AllSuiteTest вместо All )
  32.     это неправильно - надо оперировать категориями в @Categories.IncludeCategory
  33.  
  34.     не надо тут вообще @Categories.IncludeCategory
  35. */
  36. ***********************************
  37. src / test / java / task9 /
  38. ...
  39. public class BaseTest {
  40.     {
  41.         Configuration.browser = "chrome";
  42.     }
  43. }
  44. /*
  45.     Предок наших тест-классов - в том же пекедже что и сьюты
  46.     Как минимум, надо бы переместить его к тест-классам
  47.  
  48.     И еще момент
  49.     Нам нужно было обеспечить возможность запуска тестов в том браузере, который мы задали в командной строке
  50.     Configure ability to specify browser (firefox or chrome) when running tests via mvn
  51.  
  52.     В видео было про это
  53. */
  54. **********************************
  55. @RunWith(Categories.class)
  56. @Categories.IncludeCategory(Buggy.class)
  57. @Suite.SuiteClasses(ToDoMVCAtAllTest.class)
  58.  
  59. public class BuggySuiteTest {
  60. }
  61. /*
  62.     во все сьюты включай оба тест-класса
  63.     цель - чтобы было проще перенастраивать категории и не думать при этом - нужно ли еще и @Suite.SuiteClasses подправлять
  64. */
  65. **********************************
  66.  
  67. это уже делать не надо
  68. для общего развития
  69. может пригодиться
  70.  
  71. https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.3spslt1vfa35
  72. **************************************
  73. kramarenkocourses / src / test / java / task9 / modules / ToDoMVCPage.java
  74.  
  75. ...
  76. public class ToDoMVCPage {
  77. /*
  78.     пейджи-модули - мы тоже размещаем в пекедже pages
  79.     но в названии класса - не указываем Page
  80.     на всякий случай, привожу пояснения
  81.     может, уже дублирую
  82.    
  83.     Пейдж-модули удобно называть без слова Page в конце
  84.         потому что если ты будешь использовать несколько пейдж-модулей в одном тесте
  85.  
  86.         то желательно обращаться к их методам через имя класса пейдж-модуля
  87.         чтобы видеть где с каким пейджом идет работа
  88.  
  89.         и когда ты будешь писать
  90.             TodoMVCPage.givenAtAll()
  91.         то это явно не так прикольно как
  92.             TodoMVC.givenAtAll()
  93.  
  94.         правда?
  95.  
  96.             (так обращаться - важно, когда есть несколько пейджей,
  97.             а если он один - то можно без ущерба для точности -
  98.             заимпортить статически все методы и при вызове - не указывать им класса пейдж-модуля)
  99.  
  100.  
  101.         вот это Page в конце - это дань общим conventions (или общепринятым предпочтениям)
  102.         при именовании классов в мире ООП
  103.  
  104.         ми же тут юзаем подход "Модульного Программирования", потому тут этого "лишнего слова"
  105.         не нужно
  106.  
  107.         А то, что это все же пейдж - скажет нам имя пекеджа - pages
  108. */
  109. *******************
  110.  public static  void given(Task... tasks) {
  111.  
  112.         ensureMainUrl();
  113.  
  114.      ...
  115.         executeJavaScript("location.reload()");
  116.   }
  117. /*
  118.     насчет проблем при запуске в хроме
  119.    
  120.     на самом деле, вопрос к нашему приложению todoMVC )
  121.     У него есть недостаток
  122.     при обновлении или загрузке страницы - сначала загружаются все элементы
  123.     и становятся доступными для работы и только через небольшой промежуток времени - JavaScript-і єтих єлементов догружаются
  124.     и вот если тест начинает работать с элементами до загрузки джаваскриптов - наши элементы ведут себя не правильно
  125.      
  126.     правильнее всего это исправлять на уровне самого приложения - чтобы элементы были доступны уже после загрузки джаваскриптов
  127.     но - в случае, когда такая опция недоступна -  то надо как-то выкручиваться
  128.    
  129.     можно вот так
  130.     после executeJavaScript("location.reload()");
  131.     проверить размер списка тасок
  132.     он должен совпадать с количеством переданных тасок (в качестве параметра метода)
  133.     this.tasks.shouldHave(size(tasks.length));
  134.    
  135.     тут мы получили емного загадочный код)
  136.     this.tasks - коллекция элементов на странице
  137.     tasks - параметры метода
  138.    
  139.     уже не заморачивайся с неймингом - пусть так будет
  140.     но - яркий пример - когда у 2-ух разных понятий одно имя - можно получить неоднозначности
  141.    
  142.     пока этот костыть не подводил)
  143.    
  144.     почему мы этого не видели в файрфоксе, но получили в хроме
  145.     все просто)
  146.     хром - пошустрее)
  147.    
  148. */
Advertisement
Add Comment
Please, Sign In to add comment