Рубрики
Без рубрики

Как настроить тесты Cucumber для Java

Где 3 необходимые части предназначены для создания тестов Cucumber на Java. Помечено как тестирование, программирование, java, bdd.

Тесты Java cucumber состоят из 3 частей.

  1. Файл функций
  2. Определения шагов (файлы “склеивания”)
  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”