gpt4 book ai didi

java - 具有两个不同类的 Cucumber DataTable

转载 作者:行者123 更新时间:2023-12-02 05:14:40 24 4
gpt4 key购买 nike

我正在使用 Cucumber 进行 BDD,并且在一个功能中具有这种类型的数据表,我如何在 Cucumber 生成的方法中区分应该使用哪个类

And the following set of "Toys"
| name |something1|
| plane | 400 |
| ball | 800 |
And the following set of "Shoes"
| name | something2|
| boots | 35 |
| sandals | 35 |

此实现引发异常无法将表转换为 java.util.List。使用List时,SomeComplexType不能是泛型类型

@Given("^the following set of \"([^\"]*)\"$")
public <T> void the_following_set_of(String type, List<T> info) throws Throwable {
switch (type) {
case "Toys":

break;
case "Shoes":
break;
default:
break;
}
}

还有其他建议吗?

最佳答案

如果类型也是参数,您将无法自动转换为类型化对象列表,因为 Cucumber 在调用定义时不知道应该转换为哪种类型。您必须使用上面的代码并手动进行转换。如果您每种类型都有一个方法,Cucumber 将为您进行转换,例如:

@When("^the following set of toys")
public void the_following_set_of(List<Toy> toys) throws Throwable {
System.out.println(toys);
}
// ... another method for shoes, etc.

然后,只需为玩具定义一个简单的 bean,其属性名称与您在表头中使用的属性名称相同,以便 Cucumber 知道要填充哪些字段:

public class Toy {
private String name;
private String something1;

public String getName() { return name; }
public void setName(String name) { this.name = name; }
// ... etc.
}

Cucumber 现在应该使用“以及以下一组玩具”子句的填充玩具列表来调用您的方法。

关于java - 具有两个不同类的 Cucumber DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27066186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com