«1. Обзор

В этом кратком руководстве мы узнаем, как использовать лямбда-выражения Java 8 с Cucumber.

2. Конфигурация Maven

Во-первых, нам нужно добавить следующую зависимость в наш pom.xml:

<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-java8</artifactId>
    <version>1.2.5</version>
    <scope>test</scope>
</dependency>

Зависимость огурца-java8 можно найти на Maven Central.

3. Определения шагов с использованием лямбда

Далее мы обсудим, как написать наши определения шагов с использованием лямбда-выражений Java 8:

public class ShoppingStepsDef implements En {

    private int budget = 0;

    public ShoppingStepsDef() {
        Given("I have (\\d+) in my wallet", (Integer money) -> budget = money);

        When("I buy .* with (\\d+)", (Integer price) -> budget -= price);

        Then("I should have (\\d+) in my wallet", (Integer finalBudget) -> 
          assertEquals(budget, finalBudget.intValue()));
    }
}

В качестве примера мы использовали простую функцию покупок:

Given("I have (\\d+) in my wallet", (Integer money) -> budget = money);

~~ ~ Обратите внимание:

    На этом шаге мы устанавливаем начальный бюджет, у нас есть один параметр money с типом Integer Поскольку мы используем один оператор, нам не нужны фигурные скобки

4. Тестовый сценарий

Наконец, давайте взгляните на наши тестовые сценарии:

Feature: Shopping

    Scenario: Track my budget 
        Given I have 100 in my wallet
        When I buy milk with 10
        Then I should have 90 in my wallet
    
    Scenario: Track my budget 
        Given I have 200 in my wallet
        When I buy rice with 20
        Then I should have 180 in my wallet

И тестовую конфигурацию:

@RunWith(Cucumber.class)
@CucumberOptions(features = { "classpath:features/shopping.feature" })
public class ShoppingIntegrationTest {
    // 
}

Для получения более подробной информации о конфигурации огурца см. учебник Cucumber and Scenario Outline.

5. Заключение

Мы узнали, как использовать лямбда-выражения Java 8 с Cucumber.

Как всегда, полный исходный код доступен на GitHub.