Unterstützung für Gurke Java 8

Cucumber Java 8-Unterstützung

1. Überblick

In diesem kurzen Tutorial erfahren Sie, wie Sie Java 8-Lambda-Ausdrücke mit Cucumber verwenden.

2. Maven-Konfiguration

Zuerst müssen wir unserenpom.xml die folgende Abhängigkeit hinzufügen:


    info.cukes
    cucumber-java8
    1.2.5
    test

Die Abhängigkeit voncucumber-java8 kann vonMaven Central gefunden werden.

3. Schrittdefinitionen mit Lambda

Als nächstes werden wir diskutieren, wie unsere Schrittdefinitionen mit Java 8 Lambda-Ausdrücken geschrieben werden:

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()));
    }
}

Wir haben ein einfaches Einkaufsfeature als Beispiel verwendet:

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

Beachte wie:

  • In diesem Schritt legen wir das anfängliche Budget fest, wir haben einen Parametermoney vom TypInteger

  • Da wir eine Aussage verwenden, brauchten wir keine geschweiften Klammern

4. Testszenario

Schauen wir uns zum Schluss unsere Testszenarien an:

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

Und die Testkonfiguration:

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

Weitere Informationen zur Gurkenkonfiguration finden Sie im Lernprogramm vonCucumber and Scenario Outline.

5. Fazit

Wir haben gelernt, wie man Java 8 Lambda-Ausdrücke mit Cucumber verwendet.

Wie immer ist der vollständige Quellcodeover on GitHub verfügbar.