julia_v_iluhina

Untitled

Dec 18th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.69 KB | None | 0 0
  1.   public enum TaskType
  2.  
  3.   public class Task
  4.  
  5.   public String prepareGivenCommand5(Task... tasks)
  6. /*
  7.     эти 2 класса и метод - реализованы ок
  8.  
  9.     убирай рабочие комментарии отсюда
  10.  
  11.     и куски закомментаренных предыдущих версий этих классов
  12.  
  13.     если хочешь это сохранить - вынеси это в отдельный документ, снабди своими комментариями и систематизируй
  14.     и далее туда подсматривай
  15.  
  16.     тут - убираем мусор
  17.     кода будет много, потому избавляемся от всего лишнего
  18. */
  19. ************************************************
  20.     @Step
  21.     public void prepareGivenCommand(){
  22.         String jsCommand = prepareGivenCommand5 (new Task("a", TaskType.ACTIVE), new Task("b", TaskType.COMPLETED));
  23.         System.out.println(jsCommand);
  24.         executeJavaScript(jsCommand);
  25.         refresh();
  26.         assertTasks("a", "b");
  27.     }
  28. /*
  29.     я не такую задачу перед тобой ставила
  30.  
  31.     был нужен метод given(Task... tasks)
  32.  
  33.     в котором
  34.         получишь команду используя prepareGivenCommand5
  35.         выполнишь ее
  36.         выполнишь рефреш
  37.  
  38.     т е метод = реализующий нужное нам состояние списка тасок
  39.     чтоб мы при вызове метода - задавали самостоятельно - что за набор тасок нам нужен
  40.     а у тебя - прошито раз и навсегда - активная a + закомпличеная b
  41.     стоило городить огород такой - если мы со снаружи не будем задавать набор тасок
  42.  
  43.     проверок в таком методе given(Task... tasks) - не нужно
  44.         Есть разные способы выполнять предварительные действия
  45.         Ранее мы делали это - через действия на UI (User Interface)
  46.         Сейчас - работаем непосредственно с данными (далее вы такое тоже попробуете)
  47.         Так вот через действия на UI - предварительные действия не быстрые и часто не достаточно надежные
  48.         А через непосредственную работу с данными - предварительные действия быстрые и надежные
  49.  
  50.         Если предварительные действия медленные или не надежные
  51.         То проверка в конце предварительных действий нужна
  52.  
  53.         А если мы уверены - что после предварительных действий гарантировано все ОК,
  54.         то и проверок не надо после предварительных действий
  55.  
  56.         Но, поскольку наше приложение - простое
  57.         Разумно не делать проверку в конце предварительных действий
  58.         чтобы наши тесты были эффективнее
  59.  
  60.         Тестировали бы что-то типа соцсети и если бы предварительные действия были
  61.         реализованы через UI - да, после предварительных действий на UI было бы разумно
  62.         выполнить проверку (проверка после предварительных действий нам позволяет отличить -
  63.         ошибка возникла на этапе выполнения тестируемого действия, или все же раньше)
  64.  
  65. */
  66. ********************
  67. public String prepareGivenCommand...
  68. /*
  69.     все вот эти ранее реализованные prepareGivenCommand - реализуют то же самое что и prepareGivenCommand5
  70.     только в prepareGivenCommand5 - все универсальнее
  71.  
  72.     вызвав prepareGivenCommand5 - мы можем любой вариант состояния списка тасок реализовать
  73.  
  74.     нам все вот эти prepareGivenCommand... - были нужны - лишь для того - чтоб понять - методом пошагового усложнения
  75.     что ж нам в итоге нужно
  76.  
  77.     но вот так держать - кучу методов с почти одинаковым кодом - очень вредно
  78.     почитай про DRY принцип (в нашем FAQ)
  79.  
  80.     стратегия такая
  81.     если нужно реализовать что-то для тебя сложное - начинаешь с простого
  82.     и пошагово усложняешь-уточняешь
  83.     когда получил окончательный универсальный вариант - все предыдущие шаги удаляешь
  84.     получишь - что алгоритм реализован ЕДИНОЖДЫ
  85.  
  86.     и если тебе нужны варианты с набором параметров попроще - уже используешь этот реализованный метод
  87.     для реализации методов с параметрами попроще
  88.     ниже эту мысль поясню
  89.  
  90.     пока - все  prepareGivenCommand... кроме prepareGivenCommand5 - удаляй
  91.     сам prepareGivenCommand5 - переименовывай в prepareGivenCommand
  92.  
  93.     если что-то нужно для твоих внутренних нужд - как выше писала - выноси куда-то, систематизируй
  94.     и потом используй
  95.     тут, в коде, никаких закомменченных рабочих кусков или лишнего кода остаться не должно
  96.     уже к следующему ревью)
  97. */
  98. ************************
  99.  @Test
  100.     public void testCancelEditTaskAtActiveFilter() {
  101.         //given
  102.         add("a");
  103.         filterActive();
  104.  
  105.         cancelEdit("a", "a edited canceled");
  106.         assertTasks("a");
  107.         assertItemsLeft(1);
  108.     }
  109. /*
  110.     мы договаривались - что в тест-методах - уже будут реализованы предварительные действия через вызов given(Task... tasks)
  111.     реализуй это
  112.    
  113.     сначала получишь вызов вида
  114.     given(....); - сам подумай с какими параметрами нужно его вызвать
  115.     filterActive(); - т к в гивен-методе - не происходит переходов на нужный фильтр
  116.    
  117.     чтоб сделать подготовку предварительной ситуации - лаконичнее
  118.    
  119.     реализуй
  120.     givenAtActive(Task... tasks)
  121.     givenAtCompleted(Task... tasks)
  122.    
  123.     в котором - вызовешь given(Task... tasks) и переход на нужный фильтр
  124.    
  125.     это то, о чем я говрила ранее
  126.     в одном методе given(Task... tasks) - будет реализоан алгоритм
  127.     а далее - будем его переиспользовать для реализации других гивен-методов
  128.          цель которых = выполнить то же  что и given(Task... tasks)
  129.          и еще что-то, к примеру, - как с переходом на нужный фильтр у нас происходит
  130.          эту тему и далее развивать будем
  131.          пока - выполни задание вот в таком объеме
  132.          
  133.     дополнительно - реализуй тест-метод
  134.     testReopenAllAtCompleted - где используешь givenAtCompleted (работай с несколькими тасками, потом объясню - зачем)
  135.    
  136.     в остальных тест-методах - воспользуйся тем гивен-методом, который будет более уместен в той ситуации
  137.     цель = все предварительные действия выполняются в гивен-методе
  138. */
Advertisement
Add Comment
Please, Sign In to add comment