Кава з огірками (espresso cucumber)

Кава з огірками (Espresso + Cucumber) +21

  • 22.04.15 9:35 •
  • Stabilitron •
  • # 255763 •
  • Хабрахабр •
  • 2 •
  • 9463

- такий же як Forbes, тільки краще.

Кава з огірками (espresso cucumber)

Створимо проект і підключимо до нього Espresso і необхідні для нашої задачі модулі Cucumber, для цього доповнюємо блок dependency, файлу build.gradle наступним чином:


Для того, щоб ми могли використовувати кошти Espresso, нам необхідно, щоб тести запускалися через GoogleInstrumentationTestRunner. Значить для підключення Cucumber потрібно успадковуватися від цього класу, всередині якого ми передамо йому все управління.


Не забуваємо вказати наш свіжостворений instrumentation test runner в build.gradle

Тепер нам необхідно створити кроки, які будуть використовуватися в наших тестових сценаріях. У нашому випадку ними будуть невеликі тести, об'єднані в один кейс. Для цього створюємо відповідний клас, який успадковуємо від стандартного для Espresso набору тестів, щоб мати доступ до всіх необхідних речей. Додаємо до цього класу анотацію, де вказуємо, що це тести Cucumber, а результат їх роботи слід помістити в звіти відповідних форматів, в потрібні нам директорії. Зверніть увагу, Espresso-тести виконуються на пристрої, і тому доступу до тек комп'ютера у нас немає. Значить складаємо все в директорію нашого застосування:


Тепер можемо зайнятися безпосередньо реалізацією кроків. Для цього необхідно розділити методи за їх призначенням відповідно до BDD, тобто на Given, When і Then. Для цього використовуються анотації, які містять рядок для знаходження відповідностей в файлі сценарію на основі регулярних виразів, групи в яких грають роль вхідних аргументів, а в тілі самих кроків ми будемо використовувати виклики Espresso:

У разі невдалого завершення останнього кроку ми будемо знімати скріншот і додавати отримане зображення до звіту. Все інше за нас зробить Cucumber, і ми зможемо побачити стан екрану в момент помилки. Наведений далі спосіб не підходить, наприклад, для зняття знімка з діалогом, але це тема для окремої розмови.

Залишилася найприємніша частина. Маючи в руках кроки, описані в CucumberActivitySteps, ми можемо написати самі тести на людській мові, який буде доступний не тільки розробникам, але і всім іншим зацікавленим особам:


Ці сценарії ми зберігаємо в директорію features, в якій наш виконуючий клас буде їх шукати (див. Інструкцію CucumberOptions).

Кава з огірками (espresso cucumber)

Вилучення звітів з пристрою

Якщо ми запустимо тести, вони пройдуть, але звіти залишаться лежати на пристрої. Значить по завершенню тестування їх необхідно звідти забрати. Йдемо в файл build.gradle і пишемо відповідний task, який за допомогою утиліти adb і команди pull скопіює файли звітів в задану директорію.


Тепер можна все запустити через IDE, потрібно лише створити відповідну конфігурацію запуску, а після завершення тестів виконати наш task для вилучення звітів.

Кава з огірками (espresso cucumber)

Звіти ж будуть збережені в зазначену вище директорію

Але ми не хочемо запускати тести через IDE, ми хочемо запускати їх з консолі, а connectedCheck нам не підходить. Значить пишемо новий task. І тут ми, на жаль, не придумали нічого кращого, ніж збирати додаток і встановлювати його на пристрій, після чого відсилати команду на старт тестування через adb. А після всього цього забирати звіти описаним вище task'ом.


В принципі цього вже достатньо, щоб запустити тести на CI.

На виході ми отримаємо ось такі звіти:

Кава з огірками (espresso cucumber)

І до кожного сценарію, який завершився невдало, у нас буде прикладений скріншот:

Кава з огірками (espresso cucumber)

Дякуємо за увагу. Стабільних вам релізів!

Схожі статті