首页 文章

如何使用cucumber-jvm将Scenario作为对象在步骤方法中作为对象传递出去

提问于
浏览
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  |

所以在Step文件中

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

所以如果我有更多的字段,那么我的方法也会消耗更多的参数 .

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

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> . 为此,添加一个 header in the step (不是示例表),其名称与 ValidationData 类中的变量匹配,黄瓜将数据填充到对象中 .

    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) {
    
            }
    
  • 0

    这是一个更多的评论:可变长度参数列表不适合你吗?你需要知道你的参数的序列,没有参数名称来帮助你 .

    public void multiParams(String... val){
    
    }
    

相关问题