キュウリのJava 8サポート

1概要

このクイックチュートリアルでは、CucumberでJava 8のラムダ式を使用する方法を学習します。

2 Mavenの設定

まず、 pom.xml に次の依存関係を追加する必要があります。

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

cucumber-java8 依存関係はhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22cucumber-java8%22[Maven Central]で見つけることができます。

3 Lambda を使用したステップ定義

次に、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 が1つあります

Integer を持つ ** 1つのステートメントを使用しているので、中括弧は必要ありませんでした

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-scenario-outline[キュウリとシナリオの概要]のチュートリアルを確認してください。

5結論

Java 8のラムダ式をCucumberで使う方法を学びました。

いつものように、完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/testing-modules/testing[GitHubで利用可能]です。