0

我正在寻找一种解决方案,将每个场景大纲示例行作为 cucuber-jvm 中的对象传递。

例如,如果我考虑一个场景

Scenario Outline: example
Given I have a url 
When I choose <input_1>
Then page should hold field1 value as <validation field1> field2 value as <validation field2> fieldn value as <validation fieldn> 

Examples:
| input_1        |  validation field1 |validation field2|validation field n|
| input_1_case_1 |  expected value 1  |expected value 1 |expected value n  |

所以在步骤文件中

public void validationMethod(String validation field2,String validation field2,String validation field3){
............
............
} 

因此,如果我有更多字段,那么我的方法也会消耗更多参数。

现在我想将所有验证字段作为方法中的对象传递。那么可以使用黄瓜jvm吗?如果可能的话,任何人都可以请提供一些带有示例代码的建议。

4

2 回答 2

1

你可以试试这样的

Then Use the following values
| <validation field1> | <validation field2> | <validation field3> |

Examples:
| input_1        |  validation field1 |validation field2|validation field3 |
| input_1_case_1 |  expected value 1  |expected value 2 |expected value 3  |
| input_2_case_2 |  expected value 1  |expected value 2 |expected value 3  |

Step Definition
@Then("^Use the following values$")
public void useFollVal(List<String> valFields) {
     //The values will be inside the list. Use index to access

}

您甚至可以获得验证对象而不是字符串列表,即List<ValidationData>。为此,请在步骤(不是示例表)中添加一个标题,其名称与类中的变量匹配ValidationData,cucumber 会将数据填充到对象中。

Then Use the following values
| valField1 | valField2 | valField3 |   <<<--- Header to add 
| <validation field1> | <validation field2> | <validation field3> |     

        valField1 -> private String valField1; in ValidationData

    Step Definition
        @Then("^Use the following values$")
        public void useFollVal(List<ValidationData> valObject) {

        }
于 2016-09-28T06:15:16.320 回答
0

这更像是一条评论:可变长度参数列表不适合你吗?不过,您需要知道参数的顺序,而不需要参数名称来提供帮助。

public void multiParams(String... val){

}
于 2016-09-27T19:23:40.937 回答