-
Gherkin состоит из двух основных компонентов -
фич и определения шагов.
-
Для использования отличного от английского языка в фичах нужно указать:
#language: ru
-
Feature: (Функционал:) - указывается одна на весь блок (файл).
Scenario: (Сценарий:) - может быть несколько в блоке, один сценарий - это один тест.
-
Тесты можно группировать с помощью тегов, например, "@at-42".
-
Тесты можно запускать не последовательно, а параллельно (как именно это делать?).
-
Ключевые слова (Пусть, Когда, И, То) могут вообще любыми, хоть "*".
-
Каждый шаг можно параметризировать, до 255 параметров. Все параметры из шагов
вычисляются регулярками. Параметры в шагах указываются в одинарных кавычках:
'email'.
-
Пример реализации шага:
@Пусть("^пользователь заходит на страницу авторизации '(.+)'$")
public void navigateToLoginPage(String arg0) {
// Здесь код
}
В круглых скобках регулярка: точка - любой символ, плюс - любое количество символов.
Если не указывать "^" и "$", то строка будет искаться в любом месте НА ВХОЖДЕНИЕ!!!
-
Функциональный тестировщик обычно пишет фичи и ищет подходящие готовые реализации шагов.
-
Автоматизатор по готовым фичам пишет реализацию шагов.
-
Фичи нельзя инклюдить. Шаги из фич нельзя переиспользовать - копипастить.
-
Чем больше шагов в фиче, тем нестабильней код. 600 шагов - уже нестабильно очень.
-
Теги в фичах позволяют запускать отдельно тесты только с определёнными тегами (@at-42).
-
Передавать данные из одного шага в другой стандартными средствами нельзя, только
через самодельные костыли, например внешнюю Java Map.
-
Если в фичах указать в угловых скобках имена столбцов ASCII таблиц, то данные будут
подставляться из этих таблиц:
Дано в меню доступны пункты
| Файл | true |
| Редактировать | false |
| О программе | true |
-
Данные, записанные в виде таблицы с одной колонкой, Cucumber может обернуть
в ArrayList:
Дано в меню доступны пункты
| Файл |
| Редактировать |
| О программе |
@Дано("^в меню доступны пункты$")
public void вМенюДоступныПункты(List arg) {
// что-то сделать
}
-
Данные, записанные в таблицу с двумя колонками, Cucumber может обернуть в
ассоциативный массив, где данные из первой колонки – это ключ, а из второй – данные:
Дано в меню доступны пункты
| Файл | true |
| Редактировать | false |
| О программе | true |
public void вМенюДоступныПункты(Map arg) {
// что-то сделать
}
-
Ссылки на статьи:
Документация Cucumber
Cucumber на Github
Руководство: Cucumber + Java
Java со вкусом огурчика
Автоматизированное тестирование с помощью Selenium и Cucumber
Шпаргалка по регулярным выражениям
Регулярные выражения для новичков
Лучшие статические анализаторы регулярных выражений