Junit cucumber.runtime.CucumberException:不是映射或列表类型

Junit cucumber.runtime.CucumberException:不是映射或列表类型,junit,cucumber,cucumber-jvm,serenity-bdd,Junit,Cucumber,Cucumber Jvm,Serenity Bdd,如果我在数据表中使用的数据不是列表或映射类型,那么它会给我错误信息 cucumber.runtime.CucumberException:不是映射或列表类型 这就是我测试这个的方式。我正在自下而上测试它,即写入函数>然后写入步骤定义>写入功能文件,仅用于测试目的 java函数: 步骤def: 功能文件: 因为我使用场景接口作为参数,所以我必须在函数、步骤和功能文件中使用它 注意:请不要根据奇怪的场景来判断,我只是在测试它 我已经通过下面的链接,但它没有帮助我。它总是给我同样的错误 >>这个我无法

如果我在数据表中使用的数据不是列表或映射类型,那么它会给我错误信息

cucumber.runtime.CucumberException:不是映射或列表类型

这就是我测试这个的方式。我正在自下而上测试它,即写入函数>然后写入步骤定义>写入功能文件,仅用于测试目的

java函数:

步骤def:

功能文件:

因为我使用场景接口作为参数,所以我必须在函数、步骤和功能文件中使用它

注意:请不要根据奇怪的场景来判断,我只是在测试它

我已经通过下面的链接,但它没有帮助我。它总是给我同样的错误


>>这个我无法实现,我不明白

你看的方向有点不对。要在给定步骤中打印场景名称,您必须在步骤中打印之前在before钩子中捕获它:

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());
    }
}
然后这个场景将打印我的场景


@Grasshopper看到了您关于转换数据表的文章。你能把我的问题的答案贴出来吗?
@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|
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());
    }
}
Scenario: My Scenario
  And I get the current scenario name