Тесты Java cucumber состоят из 3 частей.
- Файл функций
- Определения шагов (файлы “склеивания”)
- Тестовый файл junit
Файл feature – это место, куда помещается описание теста, ориентированное на поведение или бизнес. Эти файлы написаны с использованием синтаксиса Gherkin.
При написании тестов Cucumber сначала запишите файлы компонентов. Попросите заинтересованных лиц, владельцев бизнеса и пользователей написать их, если это возможно в вашей организации. Если нет, ведущий разработчик и/или руководитель проекта должны написать файлы функций вместе с заинтересованными сторонами, владельцами бизнеса и пользователями. Выполняйте работу и собирайте их истории и сценарии.
После того, как файл объектов будет записан, запишите определения шагов. Это то, что люди из Cucumber называют “клеевым” кодом. По сути, это регулярные выражения, установочный и тестовый код.
Наконец, чтобы упростить выполнение тестов Cucumber на Java, напишите класс-оболочку junit. Это пустой аннотированный класс, который позволит Cucumber использовать тестовое оборудование junit для выполнения тестов Cucumber.
Пример
Я создал пример проекта. Cucumber использует Maven, поэтому у нас есть проект со стандартной структурой каталогов Maven:
+---src | +---main | | +---java | \---test | +---java | \---resources
Организация
Давайте поместим файлы функций в раздел test/resources. Давайте поместим классы junit в основной тестовый пакет – в данном случае com.гуннар гиссель.пример cucumber.artfight . Давайте поместим определения шагов (“клей”) в пакет stepdefs в основной тестовый пакет – com.gunnar gissel.cucumberexample.artfight.stepdefs
Сценарий Поведения
В этом примере мы создаем бизнес-движок для магазина предметов искусства. Давайте использовать Стюарт Сэмпл в качестве примера. Стюарт Сэмпл продает “Black 2.0 – самый умный, самый плоский в мире материал для черного искусства” всем, кроме Аниша Капура. Есть небольшая предыстория.
Вот как может выглядеть файл функций, no_anish_kapoor.особенность :
Feature: Stuart Semple will sell Black 2.0 to any artist except Anish Kapoor
Scenario Outline: Anish Kapoor tries to buy Black 2.0
Given a purchaser, , Black 2.0 is
Examples:
| purchaser name | saleable |
| Anish Kapoor | not saleable |
| John Doe | saleable |
| Jane Doe | saleable |
| Manish Kapoor | saleable |
| Anish Kapoorski | saleable |
С помощью файла компонентов пришло время создать определения шагов или “склеить” код. В этом случае создайте src/test/java/com.gunnar gissel.blacktwopointoh.stepdefs. NoAnishKapoor.java
В описанном выше сценарии используется только одно ключевое слово – “Дано”. Это означает, что мы создадим единый метод в нашем классе step definition “glue”, который использует аннотацию @Given . Цель аннотации @Given состоит в том, чтобы написать регулярное выражение, соответствующее сценарию. В этом случае нам нужен <имя покупателя> и <продаваемые> качества, которые являются переменными, мы переходим к шагу def. Остальная часть @Given – это деловой язык, на котором мы сопоставляем шаблоны. Step def выполняет роль типичного теста junit вместе с настройкой для теста.
@Given("^a purchaser, (.*), Black 2\\.0 is (not saleable|saleable)$")
public void testWhoCanPurchaseBlackTwoPointOh(String purchaser, String saleable) {
boolean actual_saleable = BusinessRules.saleable(purchaser);
boolean expected_saleable = saleable.equals("saleable");
assertEquals(expected_saleable, actual_saleable);
}
Теперь, когда есть сценарий и определение шага, необходимо создать класс junit runner следующим образом:
@RunWith(Cucumber.class)
@CucumberOptions(
format={"pretty", "junit:target/cucumber/black_two_point_oh_sales_list.xml"},
features = {"classpath:no_anish_kapoor.feature"},
glue={"com.gunnargissel.cucumberexample.artfight.stepdefs"}
)
public class TestBusinessRules {}
После создания необходимых файлов запуск mvn test приведет к выполнению функционального сценария, созданного выше. Maven создаст black_two_point_oh_sales_list.xml в каталоге target/cucumber .
Дополнительные Ресурсы
Just Enough Regular Expressions for Cucumber – отличное руководство, объясняющее, как использовать регулярные выражения (и Java) с Cucumber. Тот же автор также сделал шпаргалку , которая является полезной ссылкой.
Пример кода artfight.
Получайте ежемесячное электронное письмо с отличными статьями о технологиях и технологическом лидерстве со всего Интернета
Посетите мой блог для получения оригинальной статьи
Спасибо Али Бурчину Титизелю за изображение в заголовке
Оригинал: “https://dev.to/monknomo/how-to-set-up-cucumber-tests-for-java”