cuming.runtime.CucumberException:不是地图或列表类型

时间:2019-05-13 15:40:15

标签: junit cucumber cucumber-jvm serenity-bdd

如果我在数据表中使用的不是List或Map类型的数据,则会给我错误

cucumber.runtime.CucumberException: Not a Map or List type

这就是我正在测试的方式。我正在从头到尾进行测试,即编写功能>然后编写步骤def>编写功能文件(仅用于测试目的)。

java函数:

public String getScenarioName(Scenario scenario) {
        System.out.println("scenario.getName().toString());
    }

步骤定义:

@And("^Get current scenario name$")
    public void get_current_scenario_name(Scenario scenario) {
        System.out.println(getScenarioName(scenario));
    }

功能文件:

  Scenario: Title of your scenario
    Given I have a scenario
    Then Get current scenario name
      |scenario|

由于我将Scenario接口用作参数,因此必须在功能,步骤和功能文件中使用它。

注意:请不要用奇怪的情况来判断,我只是在测试它。

我浏览了以下链接,但这对我没有帮助。它总是给我同样的错误。

https://github.com/cucumber/cucumber-jvm/issues/741

http://grasshopper.tech/340/ >>这是我无法实现的,并没有默默地理解它。

1 个答案:

答案 0 :(得分:1)

您的方向有些错误。要在给定的步骤中打印出方案名称,您必须在步骤中将其捕获之前,先将其捕获,然后将其捕获:

import cucumber.api.Scenario;
import cucumber.api.java.Before;
import cucumber.api.java.en.And;

public class ExampleSteps {

    private Scenario scenario;

    @Before
    public void capture_scenario(Scenario scenario){
        this.scenario = scenario;
    }

    @And("^get current scenario name$")
    public void get_current_scenario_name() {
        System.out.println(this.scenario.getName());
    }
}

然后此方案将打印My Scenario

Scenario: My Scenario
  And I get the current scenario name