Java 如何将场景大纲中的字符串列表转换为对象

Java 如何将场景大纲中的字符串列表转换为对象,java,cucumber,Java,Cucumber,是否有方法将场景大纲中的字符串列表转换为对象,例如: Scenario Outline: eligibility rules When I specify habitation details | <you_are> | <nature> | <pro> | Examples: | you_are| nature | pro | | PNO | Living | No | | PO | Pro | y

是否有方法将场景大纲中的字符串列表转换为对象,例如:

Scenario Outline: eligibility rules
    When I specify habitation details
      | <you_are> | <nature> | <pro> |

 Examples:
      | you_are| nature | pro |
      | PNO | Living | No |
      | PO | Pro | yes |

我知道可以使用datatable传递对象列表,但这不是我想要的。scenario outline的优点是每一行都是从干净的状态重新开始的。

对于scenario outline示例,您可以重用DataTable的登录。示例表中的每一行都将像您所说的那样一尘不染

修改功能和步骤定义以使用数据表。标头应与Entry类中的变量名匹配,以便Cucumber自动创建对象,并在Entry类中提供3 arg构造函数

When I specify habitation details
 | you_are   | nature   | pro   |
 | <you_are> | <nature> | <pro> |
当我指定居住详细信息时
|你是天生的职业选手|
|  |  |  |
示例部分保持不变

@When("I specify habitation details")
    public void specifyHabitationDetails(List<Entry> entry) {

          Entry e = entry.get(0);
    }
@何时(“我指定居住细节”)
public void specifyHabitationDetails(列表条目){
条目e=条目get(0);
}

您可以在ScenarioOutline示例中重复使用DataTable的登录。示例表中的每一行都将像您所说的那样一尘不染

修改功能和步骤定义以使用数据表。标头应与Entry类中的变量名匹配,以便Cucumber自动创建对象,并在Entry类中提供3 arg构造函数

When I specify habitation details
 | you_are   | nature   | pro   |
 | <you_are> | <nature> | <pro> |
当我指定居住详细信息时
|你是天生的职业选手|
|  |  |  |
示例部分保持不变

@When("I specify habitation details")
    public void specifyHabitationDetails(List<Entry> entry) {

          Entry e = entry.get(0);
    }
@何时(“我指定居住细节”)
public void specifyHabitationDetails(列表条目){
条目e=条目get(0);
}

为什么需要在此处转换?Cucumber使用正则表达式识别这些测试用例,从中可以在测试中构建一个类;我认为你尝试的方式不正确。为什么你需要在这里转换?Cucumber使用正则表达式识别这些测试用例,从中可以在测试中构建一个类;我不认为你这样做是对的。谢谢你,这很有效!唯一的问题是我得到一个包含一个元素的列表。然后我必须输入。获取(0)以获取我的对象。有没有办法直接获取实际对象?列表中必须始终只有一个对象。默认情况下,DataTable查找多行数据。如果您直接想要Entry对象,请尝试使用传递到功能文件中步骤的分隔字符串进行一些修改。-当我指定居住详细信息时@@。修改步骤定义--public void specifyHabitationDetails(条目)。在Entry类中创建一个以分隔字符串作为参数的单参数构造函数。放置逻辑以初始化变量。Cucumber将自动调用此构造函数并为您提供Entry对象。谢谢,这很有效!唯一的问题是我得到一个包含一个元素的列表。然后我必须输入。获取(0)以获取我的对象。有没有办法直接获取实际对象?列表中必须始终只有一个对象。默认情况下,DataTable查找多行数据。如果您直接想要Entry对象,请尝试使用传递到功能文件中步骤的分隔字符串进行一些修改。-当我指定居住详细信息时@@。修改步骤定义--public void specifyHabitationDetails(条目)。在Entry类中创建一个以分隔字符串作为参数的单参数构造函数。放置逻辑以初始化变量。Cucumber将自动调用此构造函数并为您提供Entry对象。