julia_v_iluhina

Untitled

Oct 5th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.40 KB | None | 0 0
  1. public class todoMVCTest {
  2. /*
  3.     имя класса - должно быть с большой буквы
  4.     https://google.github.io/styleguide/javaguide.html#s5.2.2-class-names
  5. */
  6.     @Test
  7.     public void createTask() {
  8.     /*
  9.         таки не послушался совета из
  10.         https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
  11.  
  12.         это - е2е сценарий
  13.         тут мы тестируем несколько действий
  14.  
  15.         для таких случаев можно применять более общие названия
  16.         например
  17.         tasksLifeCycle, tasksCommonFlow
  18.         or
  19.         testTasksLifeCycle, testTasksCommonFlow
  20.  
  21.         почитай раздел в faq)
  22.     */
  23.  
  24.         open("https://todomvc4tasj.herokuapp.com/");
  25.         CommonActions tasks = new CommonActions();
  26.  
  27. //- Tasks #1-4 from test scenario
  28.         tasks.add("#new-todo", "t1");
  29.         tasks.add("#new-todo", "t2");
  30.         tasks.add("#new-todo", "t3");
  31.         tasks.add("#new-todo", "t4");
  32.         /*
  33.             для чего у метода add первый параметр?
  34.  
  35.             неужели мы можем использовать другой селектор для добавления таски? )
  36.  
  37.             используй комментарии только тогда - когда они действительно необходимы
  38.             //- Tasks #1-4 from test scenario - ничего нового нам не говорит
  39.             убирай)
  40.             касается и других подобных комментариев
  41.         */
  42.  
  43.         $$("#todo-list li").shouldHave(exactTexts("t1", "t2", "t3", "t4")).shouldHaveSize(4);
  44.         /*
  45.             нам достаточно проверки shouldHave(exactTexts("t1", "t2", "t3", "t4"))
  46.             как осуществяется проверка по кондишену exactTexts
  47.             сверяется количество, порядок и тексты
  48.                 количество элементов коллекции должно быть равно количеству переданных текстов
  49.                 иначе - проверка не прошла
  50.                 и далее - по порядку сверяются текст элемента и переданный текст
  51.                 нулевой - с нулевым
  52.                 первый с первым
  53.                 и  т д
  54.             таким образом - уже не нужно проверять размер списка
  55.             раз уже проверили  exactTexts
  56.  
  57.             касается и последующих проверок
  58.         */
  59.  
  60. //- Task #5 from test scenario
  61.         tasks.delete("t2", ".destroy");
  62.         /*
  63.             тот же вопрос)
  64.  
  65.             другой селектор, не ".destroy" - мы разве можем использовать для удаления?
  66.             а раз нет - тогда зачем нам такой второй параметр у метода?
  67.         */
  68.         $$("#todo-list li").shouldHave(exactTexts("t1", "t3", "t4")).shouldHaveSize(3);
  69.  
  70. //- Task #6 from test scenario
  71.         tasks.switchCheckBox("#todo-list li", "t4", ".toggle");
  72.         /*
  73.             мы переключаем = туглим = toggle - им
  74.             посмотри на перевод toggle
  75.             если есть термины в приложении - используй их
  76.  
  77.             tasks.toggle - будет точее и лаконичнее
  78.  
  79.             вопрос - мы где-то кроме коллекции с селектором "#todo-list li" - можем это делать?
  80.             нет
  81.             мы можем это делать используя какой-то другой элемент, кроме  ".toggle"?
  82.             тоже нет)
  83.  
  84.             так зачем это выносить в параметры метода?
  85.         */
  86.  
  87. //- Task #7 from test scenario
  88.         tasks.clickButton("#clear-completed");
  89.         /*
  90.             почему не tasks.clearCompleted()?
  91.             так - будет действительно проще
  92.  
  93.             сравни
  94.             tasks.clickButton("#clear-completed");
  95.             и
  96.             $("#clear-completed").click();
  97.             уже в прошлый раз про подобное говорили)
  98.             незачем реализовывать методы
  99.             если не становится проще
  100.  
  101.             а вариант tasks.clearCompleted() -
  102.             более простой вариант
  103.             т к мы уже не оперируем селектором
  104.             надо выполнить такое-то действие - так имя метода про это и говорит
  105.  
  106.             clearCompleted можно сделать с помощью какого-то другого элемента
  107.             кроме элемента с селектором "#clear-completed"?
  108.             нет
  109.             значит - зачем параметр методу?
  110.  
  111.             почитай про KISS principle
  112.         */
  113.         $$("#todo-list li").shouldHave(exactTexts("t1", "t3")).shouldHaveSize(2);
  114.  
  115. //- Task #8 from test scenario
  116.         $("#toggle-all").click();
  117.  
  118. //- Task #9 from test scenario
  119.         tasks.clickButton("#clear-completed");
  120.         $$("#todo-list li").shouldHaveSize(0);
  121.         /*
  122.             проверка правильная
  123.             но можно чуть нагляднее
  124.             $$("#todo-list li").shouldBe(empty);
  125.             технически - также
  126.             но - короче и нагляднее
  127.         */
  128.     }
  129. }
  130. *******************************************************
  131. сравни свой код с таким
  132.         TodoMVCPage tasks = new TodoMVCPage();
  133.  
  134.         open("https://todomvc4tasj.herokuapp.com/");
  135.  
  136.         tasks.add("t1");
  137.         tasks.add("t2");
  138.         tasks.add("t3");
  139.         tasks.add("t4");
  140.         $$("#todo-list li").shouldHave(exactTexts("t1", "t2", "t3", "t4"));
  141.  
  142.         tasks.delete("t2");
  143.         $$("#todo-list li").shouldHave(exactTexts("t1", "t3", "t4"));
  144.  
  145.         tasks.toggle("t4");
  146.         tasks.clearCompleted();
  147.         $$("#todo-list li").shouldHave(exactTexts("t1", "t3"));
  148.  
  149.         $("#toggle-all").click();
  150.         tasks.clearCompleted();
  151.         $$("#todo-list li").shouldBe(empty);
  152.  
  153.  
  154. или даже с таким (если это сложно - то останавливайся на предыдущем варианте)
  155.  
  156.         TodoMVCPage tasks = new TodoMVCPage();
  157.  
  158.         open("https://todomvc4tasj.herokuapp.com/");
  159.  
  160.         tasks.add("t1");
  161.         tasks.add("t2");
  162.         tasks.add("t3");
  163.         tasks.add("t4");
  164.         tasks.assertTexts("t1", "t2", "t3", "t4");
  165.  
  166.         tasks.delete("t2");
  167.         tasks.assertTexts("t1", "t3", "t4");
  168.  
  169.         tasks.toggle("t4");
  170.         tasks.clearCompleted();
  171.         tasks.assertTexts("t1", "t3");
  172.  
  173.         tasks.toggleAll();
  174.         tasks.clearCompleted();
  175.         tasks.assertEmpty();
  176.  
  177. /*
  178.     обрати внимание на пропуски строк
  179.     на имена методов
  180.     на их параметры
  181.     на то - нужны ли комментарии
  182.     на имя класса для вспомогательных методов - писала тебе про это в прошлый раз
  183.  
  184.     согласись - написано - в общем-то то же что у тебя
  185.     но читать - на порядок проще
  186.     комментировать - нечего
  187.  
  188.     максимум - для toggle и toggleAll
  189.     написать краткие комментарии - complete & complete all
  190.     т к имя метода нам не рассказывает об эффекте - что мы получим
  191.  
  192.     конечно, тестовые данные мы передаем как параметры
  193.     но - селекторы - можно уже внутри вспомогательных методов спрятать
  194.     почему - надеюсь, пояснений выше хватило
  195. */
Advertisement
Add Comment
Please, Sign In to add comment