saba saba - 2 months ago 19
Java Question

How to pass Scenario out line data as a object in step method using cucumber-jvm

I am finding a solution to pass each scenario outline example row as object in cucuber-jvm.

So as for example if I consider a scenario

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 |


So in Step file

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


So if I have more field then my method also consume more argument.

Now I want to pass all validation field as object in method. So is it possible using cucumber jvm? If possible could any one can please provide some suggestion with sample code.

Answer

You could try something like this

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

}

You can even get an validation object instead of string list ie List<ValidationData>. To do this add a header in the step (not the examples table) with names matching the variables in the ValidationData class and cucumber will populate the data into the object.

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) {

        }
Comments