julia_v_iluhina

Untitled

Dec 15th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.04 KB | None | 0 0
  1. public class firstSelenideTest {
  2. /*
  3.     в имена тест-классов - не надо включать структурную информацию
  4.     первый/второрой/на чем написанный/какая попытка и прочеее
  5.     это лучше отражать в имени пекеджа
  6.  
  7.     а имя тест-класса - должно описывать - что мы тестируем
  8.     а мы тестируем  -  todoMVC
  9.  
  10.     почитай FAQ - раздел по неймингу
  11.     и переименуй и тест-класс, и тест-метод
  12.     https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=kix.j1paet9x2zve
  13. */
  14.  
  15.     @Test
  16.     public void testCreateTask() {
  17.     /*
  18.         мы тестируем не только создание таски
  19.         но и несколько других операций
  20.         если их перечислить в имени - будет длинно и не наглядно
  21.         для таких случаев - применяй вот такой совет
  22.         https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
  23.     */
  24.  
  25.         //1 create task1, 2 create task2, 3 create task3, 4 create task4
  26.         /*
  27.             достаточно комментария create
  28.             ведь остальное - вполне понятно из кода
  29.             а в следующих версиях - мы и от этого комментария избавимся)
  30.  
  31.             старайся не использовать лишних комментариев
  32.             и если уж они нужны - то пиши в них только нужное - чего из кода нельзя понять
  33.             например - номера шагов, или уточнения аж до текста таски
  34.             это правило сбережет тебе силы - когда код придется менять
  35.             ведь при этом  - и все комментарии придется менять
  36.             и это легко пропустить - потому код по максимуму должен пояснять сам себя
  37.  
  38.             этот навык весь курс будем оттачивать
  39.  
  40.             учти это и для других комментариев в коде
  41.         */
  42.         open("https://todomvc4tasj.herokuapp.com/#/");
  43.         /*
  44.             используй пропуск строки для деления кода на блоки
  45.             каждый блок - своя законченная мысль
  46.  
  47.             open - стоит отделить от создания тасок
  48.             и комментарий create - стоит располагать непосредственно перед добавлением тасок
  49.         */
  50.         $("#new-todo").setValue("do something_1").pressEnter();
  51.         $("#new-todo").setValue("do something_2").pressEnter();
  52.         $("#new-todo").setValue("do something_3").pressEnter();
  53.         $("#new-todo").setValue("do something_4").pressEnter();
  54.  
  55.         $$("#todo-list li").shouldHave(size(4));
  56.         $$("#todo-list li").shouldHave(exactTexts("do something_1","do something_2", "do something_3", "do something_4"));
  57.         /*
  58.          нам достаточно проверки shouldHave(exactTexts(...))
  59.                     как осуществяется проверка по кондишену exactTexts
  60.                     сверяется количество, порядок и тексты
  61.                         количество элементов коллекции должно быть равно количеству переданных текстов
  62.                         иначе - проверка не прошла
  63.                         и далее - по порядку сверяются текст элемента и переданный текст
  64.                         нулевой - с нулевым
  65.                         первый с первым
  66.                         и  т д
  67.                     таким образом - уже не нужно проверять размер списка
  68.                     раз уже проверили  exactTexts
  69.         */
  70.  
  71.         //5 delete task2
  72.         $("li[data-index='1']").hover();
  73.         $("li[data-index='1'] button.destroy").click();
  74.         $$("#todo-list li").shouldHave(size(3));
  75.         /*
  76.             button.destroy или .destroy - оба варианта точно идентифицируют кнопку удаления
  77.             только второй вариант - помимо наглядности, еще и более лаконичный
  78.             я считаю - вариант .destroy - предпочтительнее
  79.             и далее - есть похожие ситуации, там тоже это учти
  80.  
  81.             проверки размера списка тасок - недостаточно
  82.             ведь количество тасок может быть верным
  83.             но будут проблемы с их текстами
  84.  
  85.             ты хороший вариант селектора использовала для работы со списком тасок
  86.             "#todo-list li"
  87.  
  88.             и теперь - везде - где нужно работать с чем-то из списка тасок - оттолкнись от "#todo-list li"
  89.             и дополни этот селектор необходимыми уточнениями
  90.             но вот это начало - "#todo-list li" - не меняй
  91.  
  92.             когда доступаемся до таски из списка - начни с "#todo-list li"
  93.             и далее - уточняйся
  94.  
  95.             уже сейчас это даст бОльшую однозначность и наглядность - проще будет сориентироваться -
  96.             с чем мы работаем
  97.             а дальше - после второго видео - мы сможем по максимуму бонусы получить от такого подхода
  98.  
  99.             по использованию [data-index='1']
  100.             не лучший вариант
  101.             попробуй добавить 3 таски, удалить среднюю, и снова добавить новую
  102.             в общем случае - работа с [data-index=...] - заставит глубще и дольше задумываться над логиков кода
  103.             можно написать проще
  104.             воспользуйся советами из http://www.w3schools.com/cssref/css_selectors.asp
  105.  
  106.             это тоже учти и в дальнейшем коде
  107.         */
  108.  
  109.         //6 mark task4 as completed
  110.         $("ul#todo-list *:nth-of-type(2) input.toggle").setSelected(true);
  111.         $("ul#todo-list *:nth-of-type(2) input.toggle").shouldBe(selected);
  112.         /*
  113.             насчет setSelected(true)
  114.             как он работает
  115.             выполняется проверка - сключен ли переключатель, и если не включен - то выполняется клик
  116.  
  117.             нам на самом деле - достаточно клика на элементе
  118.             даже больше скажу - имено так и стоит реализовывать
  119.             т к заодно мы проверим - если кликнуть на чекбоксе .toggle таски, которую только добавили -
  120.             то она именно закомплитится
  121.  
  122.             более интеллектуальный setSelected - нам такого не даст
  123.  
  124.             что касается проверки
  125.             правильнее, если проверка касается не одной таски, с которой мы работали
  126.             а всего списка
  127.             т к могло быть так - мы работали с одной таской, а проблемы возникли с другой
  128.  
  129.             на самом деле - про эту проверку мы еще не раз будем говорить)
  130.             пока - для первой версии - определись - что отличает закомпличеные таски
  131.             получи коллекцию - закомпличеные таски
  132.             и реализуй для них - проверку поточнее
  133.  
  134.             получится - что ты проверишь состояние всех закомпличеных тасок в списке
  135.             этого достаточно - с учетом следующей проверки после   clear-completed
  136.         */
  137. **************************************
  138.  
  139.         //8 mark all as completed
  140.         $("#toggle-all").setSelected(true);
  141.         $("#toggle-all").shouldBe(selected);
  142.         /*
  143.             а вот состояние чекбокса #toggle-all - на самом деле - мелочи
  144.             гораздо важнее - в каком состоянии сами таски в списке
  145.             именно это и стоит проверять - важное и относящееся к логике работы приложения
  146.  
  147.  
  148.             тоже этой темы еще коснемся)
  149.         */
  150. ********************************************
  151.         //9 clear completed
  152.         $("#clear-completed").click();
  153.         $("#new-todo").shouldBe(visible);
  154.         /*
  155.             Последняя проверка - странная)
  156.  
  157.             мы проверили - что поле для добавления нвой таски - видимо
  158.  
  159.             а что нам такая проверка дает?
  160.             и как это проверяет выполненную операцию?
  161.            
  162.             мы работали со списком тасок
  163.            
  164.             и после clear completed - в списке не осталось ни одной таски
  165.             это - важно
  166.             и это надо проверить
  167.            
  168.             а видимость поля #new-todo - точно не стоит проверять тут
  169.             на самом деле - этот факт - что когда чписок тасок пуст - поле для ввода новой таски видимо - мы уже проверили)
  170.             когда в начале теста - таски добавляли
  171.            
  172.             а тут - работали со списком тасок - значит и проверить нужно его же
  173.         */
  174.     }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment