julia_v_iluhina

Untitled

Sep 28th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.47 KB | None | 0 0
  1.  private Task aTask(TaskStatus taskStatus, String taskText)
  2.  private Task[] allTasks(TaskStatus taskStatus, String... taskTexts) {
  3. /*
  4.     раз для первого метода посчитали хорошим именем aTask
  5.     то для второго метода - можно такое имя использовать - aTasks
  6.     можно и более стандартно - getTasks (имя метода = что делаем + уточнения)
  7.  
  8.     allTasks - дает некую неоднозначность...
  9.     но настаивать не буду
  10. */
  11. *****************
  12.     private void givenAtActive(Task... tasks) {
  13.  
  14.         given(tasks);
  15.     }
  16.  
  17.     private void givenAtCompleted(Task... tasks) {
  18.  
  19.         given(tasks);
  20.     }
  21. /*
  22.     второй строкой в єтих методах - должен быть переход на нужный фильтр
  23.  
  24.     и тогда в тесте
  25.         @Test
  26.         public void testDeleteAtCompleted() {
  27.             givenAtCompleted(aTask(COMPLETED, "A"), aTask(COMPLETED, "B"));
  28.             filterCompleted();
  29.  
  30.             delete("A");
  31.  
  32.             assertTasks("B");
  33.             assertItemsLeft(0);
  34.         }
  35.  
  36.     вместо
  37.      given(COMPLETED, "A", "B");
  38.      filterCompleted();
  39.  
  40.     будешь применять
  41.      givenAtCompleted(COMPLETED, "A", "B");
  42.  
  43.     собственно - ради этого и городили огород)
  44.  
  45.     в данном случае - filterCompleted() - еще подготовительное действие
  46.  
  47. */
  48. ********************************************
  49.  @Test
  50.     public void testTasksCommonFlow() {
  51. /*
  52.     тут тоже вызывай given()
  53.  
  54.     см строки 164-195 прошлого ревью
  55. */
  56. *************************************************
  57. /*
  58.     по покрытию
  59.  
  60.     хорошо бы вернуться к тест-плану
  61.     ты уже его в корзину переместил)
  62.     https://docs.google.com/spreadsheets/d/1ZnMTTK9pSvGuo2OAKMmA1xCa5_gIWvdK5u5T9xnIxCU/edit#gid=0
  63.     я на втором листе - нарисовала - как при таких приоритетах, как ты проставил
  64.     реализовать optimized full coverage
  65.  
  66.     еще картинка
  67.     http://joxi.ru/YmEnRaLFZpvOd2
  68.     на случай - если файл твой документ таки погибнет)
  69.  
  70.     можешь и не оптимизировать покрытие
  71.     тогда надо будет покрыть и остальные белые ячейки
  72.     (а то и все зеленые тоже - если покрывать фиче-тестами и покрытое в е2е в том числе)
  73.  
  74.     принцип оптимизации - описывала в прошлый раз
  75.     см прошлое ревью, строки 199-223
  76. */
  77.  
  78. /*
  79.     пример - нам нужны 3 фиче-теста для cancel edit
  80.  
  81.     для фиче-тестов - которые тестируют одно на разных контекстах
  82.     старайся обеспечить разную тестовую ситуацию
  83.     например
  84.         работаем с единственной таской
  85.         работаем со второй таской
  86.         работаем с единственной видимой таской (а есть еще и не видимые)
  87.     таким образом мы улучшим покрытие, не увеличивая общего количества тест-методов
  88.  
  89.     также эффективно будет покрыть и проверку items left счетчика
  90.     если бы мы отдельно писали тесты для этого
  91.     то фактически - пришлось бы делать то же самое в рамках предварительных действий
  92.     потому - разумно второй проверкой по пути проверить и  items left
  93.  
  94.     эти же принципы примени и для остальных фиче-тестов
  95. */
  96.  
  97.     @Test
  98.     public void testCancelEditAtAll() {
  99.         givenAtActive(aTask(ACTIVE, "B"), aTask(COMPLETED, "C"));
  100.  
  101.         cancelEdit("C", "C Edited");
  102.         assertTasks("B", "C");
  103.         assertItemsLeft(1);
  104.     }
  105.  
  106.     @Test
  107.     public void testCancelEditAtActive() {
  108.         givenAtActive(aTask(COMPLETED, "A"), aTask(ACTIVE, "B"));
  109.  
  110.         cancelEdit("B", "B Edited");
  111.         assertTasks("B");
  112.         assertItemsLeft(1);
  113.     }
  114.  
  115.     @Test
  116.     public void testCancelEditAtCompleted() {
  117.         givenAtCompleted(COMPLETED , "C");
  118.  
  119.         cancelEdit("C", "C Edited");
  120.         assertTasks("C");
  121.         assertItemsLeft(0);
  122.     }
  123. *******************************************
  124.     @Test
  125.     public void testAddAtCompletedSecondMethod() {
  126.         given(COMPLETED, "A", "B");
  127.  
  128.         filterCompleted();
  129.         assertTasks("A", "B");
  130.         assertItemsLeft(0);
  131.     }
  132. /*
  133.     не факт - что нужно покрывать Add - если оптимизируем покрытие
  134.  
  135.     предположим - нужно
  136.  
  137.     в этом методе - нету тестируемого действия - добавления таски
  138.  
  139.     то, что мы в предварительных действиях заполнили локал сторидж -
  140.     так это мы только тестовую ситуацию создали
  141.  
  142.     тестируемое действие - именно вызов add
  143.  
  144.     чтобы покрыть полностью - добавление таски
  145.     нужно 3 метода
  146.     testAddAtAll
  147.     testAddAtActive
  148.     testAddAtCompleted
  149.  
  150.     ну и в одном случае -
  151.         добавляем первую таску
  152.     в другом -
  153.         добавляем вторую при существующих не видимых
  154.     в третьем -
  155.         добавляем не первую таску
  156.  
  157.     ну и по возможности - со статусами тасок тоже варьируем - чтоб максимально по-разному все было
  158. */
  159. *********************
  160. /*
  161.     отдельно заострю внимание на тестах фильтеринга
  162.  
  163.     схема теста
  164.  
  165.     тестируем переход с фильтра1 на фильтр2
  166.  
  167.         предварительные действия -
  168.         несколько тасок с разными статусами
  169.         (2 достаточно, можно в одном из таких тестов - чуть усугубить - 4 таски задать
  170.         чтоб не единственная таска отображалась в списке и не единственная таска скрывалась)
  171.         + стартуем на фильтре 1 - соответсвтующий гивен вызывай
  172.  
  173.         тестируемое действие - переход на фильтр 2
  174.  
  175.         проверки - состояние списка тасок + items left
  176.        
  177.    
  178.     оперируя тестовой ситуацией - когда есть таски с разными статусами - ты точнее всего проверишь фильтрацию
  179.     т к гарантированно меняется состояние списка
  180.        
  181. */
Advertisement
Add Comment
Please, Sign In to add comment