为什么用lambda表达实现黄瓜stepdef是一个好习惯?

时间:2019-03-21 22:35:24

标签: java lambda cucumber

我们知道,使用新的Cucumber-Java8 API,我们可以使用lambda表达式编写步骤定义。 来自github-cucumber的示例代码:

package foo;

import cucumber.api.java8.En;

public class TestLambdaStepdefs implements En {

    //Lambda-steps inside Constructors
    public TestLambdaStepdefs() {
        Given("I have (\\d+) cukes in my belly", (Integer cukes) -> {
            System.out.format("Cukes: %n\n", cukes);
        });

    Then("I have a some step definition", () -> {
             throw new Exception();
        }); 

    Given("testlambda", () -> {
         System.out.println("Inside Given");
    });

    When("^the search phrase \"([^\"]*)\" is entered$", (String phrase) -> {
        System.out.println("Inside When");
    });

    Then("^results for \"([^\"]*)\" are shown$", (String phrase) -> {
        System.out.println("Inside Then");
    });
    }

有人可以帮助我了解使用lambda表达式的优点吗? 以及为什么lambda应该在构造中写?

谢谢您的输入。

1 个答案:

答案 0 :(得分:1)

这是为了在编写Cucumber测试时启用Java Functional Programming Style。阅读有关功能编程功能here的更多信息。关键特征将是:

  • 纯函数
  • 无州
  • 没有副作用
  • 不变变量