julia_v_iluhina

Untitled

Sep 21st, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.73 KB | None | 0 0
  1. http://joxi.ru/eAO7pYkt4YgRRA
  2.  
  3. /*
  4.     перенеси пекедж helpers внутрь fullCoverageWithFT
  5.  
  6.     так будет удобнее - для проекта в котором - для каждой домашки - свой пекедж
  7.  
  8.     про то, что есть красиво и правильно для структуры проекта - еще поговорим
  9.  
  10.     пока делаем удобно)
  11.     для нашей конкретной реальности - проекта с домашками
  12. */
  13. **********************************
  14. http://joxi.ru/DrlQ5oLh4P1q3m
  15.  
  16. /*
  17.     1 - точка с запятой - лишняя
  18.  
  19.     2 - пропуск одной строки - хорош для форматироания кода
  20.     пропуск нескольких строк - уже лишнее
  21.     https://google.github.io/styleguide/javaguide.html#s4.6.1-vertical-whitespace
  22. */
  23. *************************************
  24. if (!baseUrl.equals(url())) open(baseUrl);
  25.  
  26. /*
  27.     соблазнительно обойтись без фигурных скобок)
  28.     а по конвеншенсам - они нужны)
  29.  
  30.     я так понимаю - во избежание такого развития событий
  31.     надо позже что-то еще включить в if-блок
  32.     и человек по-бытрому дописывает еще одну строку - не заботясь о фигурных скобках
  33.     а потом - проблемки)
  34.     в общем - сразу соломку стелем))
  35.  
  36.     в прошлом ревью давала линку на этот раздел конвеншенсов
  37. */
  38. *******************************
  39.  
  40.     public void editCompletedOnAll() {
  41.         givenAtAll(aTask("a", COMPLETED));
  42. ...
  43.  
  44.     public void cancelEditOnActive() {
  45.         givenAtActive(aTask("b", ACTIVE));
  46. ...
  47.     public void editOnActive() {
  48.         givenAtActive(aTask("v", ACTIVE));
  49. ...
  50.     public void cancelEditOnAll(){
  51.         givenAtAll(aTask("a", ACTIVE));
  52. ...
  53.  
  54. /*
  55.     применять разные буквы для текстов тасок - это уже как решишь
  56.     но в принципе - не обязательно)
  57.  
  58.     важнее - создать разные тестовые ситуации
  59.     во всех этих родственных случаях - работаем с единственной таской
  60.  
  61.     было бы лучше если бы
  62.         работали со второй зи 2-ух тасок
  63.         работали с певой из 2-ух тасок
  64.         работали с единственной таской
  65.         работали с единственной видимой таской (при существовании и невидимой)
  66.  
  67.     вот это - поправь)
  68.  
  69.     еще отслеживать такие моменты и покрытие - легче - если методы расположены в неком порядке
  70.  
  71.     например, идем построчно по тест-плану
  72.         editCompletedOnAll()
  73.         editOnActive()
  74.  
  75.         deleteOnAll()
  76.         deleteOnActive()
  77.  
  78.         completeOnActive()
  79.         ...
  80.  
  81.     ну или по колоночкам идти - тоже есть в этом смысл
  82.  
  83.  
  84.     кстати, я бы не стала называть метод  вот так - editCompletedOnAll()
  85.     достаточно editOnAll()
  86.     все нюансы тестовой ситуации все равно не отразишь (если будешь делать ситуации - как я выше писала)
  87.     на уровне имен методов - я бы просто указывала - что проверили и на коком фильтре
  88.  
  89.     а если надо глубже - уже в отчете можно будет посмотреть
  90. */
  91. **********************
  92.     public void deleteOnAll() {
  93.         givenAtAll(aTasks(ACTIVE, "a", "c", "b"));
  94. ...
  95.     public void deleteOnActive(){
  96.         givenAtActive(aTasks(ACTIVE, "a", "b", "c"));
  97. ...
  98.     public void deleteOnCompleted() {
  99.             givenAtCompleted(aTask("a", ACTIVE), aTask("c", COMPLETED));
  100. /*
  101.     тут  - уже разнообразнее
  102.     можно и так оставить )
  103.  
  104.     а можно на одном из фильтров - удалять единственную таску
  105.     получится максимально разнообразно
  106.  
  107.     в обоих случаях - оперируем
  108. */
  109. ***********************
  110.     public void clearCompletedOnAll(){
  111.         givenAtAll(aTask("a", COMPLETED), aTask("b", ACTIVE), aTask("c", COMPLETED), aTask("d", ACTIVE));
  112.  
  113. ...
  114.     public void clearCompletedOnActive(){
  115.         givenAtAll(aTask("a", COMPLETED), aTask("b", ACTIVE), aTask("c", COMPLETED), aTask("d", ACTIVE));
  116.  
  117. /*
  118.     почему в clearCompletedOnActive - делаем givenAtAll?
  119.  
  120.     даже если это поправить)
  121.     соглашусь - что за счет разных фильтров - ситуация разная
  122.  
  123.     я бы ее сильнее разнообразила)
  124.     в одном из случаев - удаляла единственную таску
  125. */
  126. *************************
  127.     @Test
  128.     public void completeAllOnAll() {
  129.         givenAtAll(aTasks(ACTIVE, "a", "b"));
  130.  
  131.         toggleAll();
  132.  
  133.         assertTasksAre("a", "b");
  134.  
  135.         filterCompleted();
  136.  
  137.         assertVisibleTasksAre("a", "b");
  138.         assertItemsLeft(0);
  139.     }
  140. /*
  141.     ага, таки ты от 3-ех гивен-методов избавилась)
  142.     ну, в принципе, ок - вызов givenAtAll(aTasks(ACTIVE, "a", "b")); -
  143.     достаточно лаконичный)
  144.  
  145.     ты в тест-плане - пометила - что assertItemsLeft(0); - покрыто после completeAll
  146.  
  147.     нет)
  148.     это у тебя покрыто после filterCompleted(); )
  149.  
  150.     добавь assertItemsLeft(0); и в проверки после completeAll
  151.  
  152.     и в названии метода отрази - что покрыли не только completeAll
  153.     но и switchToCompleted - что-то типа
  154.  
  155.     completeAllOnAllAndSwitchToCompleted()
  156.  
  157.     длинновато)
  158.     но это скрывать не стоит)
  159.  
  160.     тоже - для меня повод подумать - стоит ли такой метод реализовывать
  161.  
  162.     тут, конечно, - решения идеального нет)
  163.  
  164.     есть плюсы и у такого варианта, как у тебя
  165.  
  166. */
  167. *******************************************
  168.     @Test
  169.     public void switchFromActiveToAll(){
  170.         givenAtActive(aTask("a", ACTIVE));
  171.  
  172.         filterAll();
  173.         editByPressTab("a", "a edited");
  174.  
  175.         assertTasksAre("a edited");
  176.         assertItemsLeft(1);
  177.     }
  178.  
  179.     @Test
  180.     public void switchFromCompletedToActive(){
  181.         givenAtCompleted(aTask("a", ACTIVE), aTask("b", COMPLETED));
  182.  
  183.         filterActive();
  184.         editByClickOutside("a", "a edited");
  185.  
  186.         assertVisibleTasksAre("a edited");
  187.         assertItemsLeft(1);
  188.     }
  189. /*
  190.     ну, для уточнения теста complete all at All  - согласна
  191.     был смысл делать маленький е2е
  192.     мы уточняли проверки
  193.     и по пути - покрыли еще одно действие
  194.  
  195.     а тут - я не вижу причин делать е2е - объединяя переход на другой фильтри и разные виды редактирования
  196.     мы мало что экономим и делаем тестирование этих фич - зависимым. А это не хорошо.
  197.  
  198.     тем более - что уже есть отдельные фиче-тесты - для
  199.     editByPressTab и editByClickOutside
  200.    
  201.     мы и так уже молодцы - оптимизировати покрытие
  202.  
  203. */
  204. ************************************
  205.     private void editByClickOutside(String oldTaskText, String newTaskText) {
  206.         setNewTaskText(oldTaskText, newTaskText);
  207.         $("h1").click();
  208.     }
  209. /*
  210.     можно и так)
  211.  
  212.     а можно кликнуть на элементе
  213.     селектор которого мы уже используем
  214.     и по клику на котором ничего кроме смены фокуса - не происходит
  215.  
  216.     хороший кандидат $("#new-todo")
  217.     не забудь про вот это
  218.     https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.pk1xvngaj4rk
  219. */
Advertisement
Add Comment
Please, Sign In to add comment