黄瓜jvm varargs支持步骤定义

时间:2015-03-07 17:29:27

标签: java bdd cucumber-jvm cucumber-junit

如何在黄瓜java绑定中定义步骤定义时使用varargs的强大功能。我有下面的步骤

Given I have following product: prod1, prod2, prod3

我的步骤定义

@Given("^I have following product [(exhaustive list of products or pattern of the product names)]$")
public void stepDef(String...args)
{
//Process varargs array "args" in here
}

我知道解决方法可以是除了冒号后的完整字符串,然后在代码中使用split(",")拆分字符串并将其转储到数组中。但我只是想知道黄瓜本身是否支持varargs模式。

TIA !!!

2 个答案:

答案 0 :(得分:10)

我不知道黄瓜是否支持varargs,但也许你可以通过直接列表匹配来达到你的目标?

您可以在黄瓜的功能文件中定义示例列表

您可以在步骤结束时定义它们:

@Given i want a list
|Entry1|
|Entry2|

或内联:

@Given i want a list: Entry1, Entry2

然后你可以使用胶水代码:

@Given(^i want a list$)
public void i_want_a_list(List<String> entries) {
//do stuff
}   

@Given(^i want a list: (.*)$)
public void i_want_a_list(List<String> entries){
 //Do something with the list
}

您可以在此处找到更多信息:https://cukes.info/docs/reference/jvm#step-definitions

答案 1 :(得分:0)

If your steps like below-
Given I have following product
|prod1|
|prod2|
|prod3|
Then step definition becomes-

@Given("^I have following product$")
public void i_have_following_product(DataTable dt) throws Exception
{
  List<List<String>> outerList = dt.rows();
  for(List<String> innerList : outerList)
    {
      System.out.println(innerLlist.get(0));
    }
}