João Matos :
Is there a way to group the parameters into a single one, e.g. pass a data structure that yields all of them?
e.g. I want to avoid having methods with too many arguments:
Scenario Outline: My scenario has too many parameters
When I perform my request with these inputs: <param1>, <param2>, <param3>, <param4>, <param5>, <param6>, <param7>, <param8>, <param9>, <param10>, <param11>
Examples:
| param1 | param2 | param3 | param4 | param5 | param6 | param7 | param8 | param9 | param10 | param11 |
| dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy |
| dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy |
and then the method:
@Given("^When I perform my request with these inputs: (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+), (.+)$")
public void tooMany(String param1, String param2, String param3, String param4, String param5, String param6, String param7, String param8, String param9, String param10, String param11) {
...
Are there better approaches to transfer that many inputs?
Thank you
Greg Burghardt :
Using a data table as part of your step can help organize this information:
Scenario Outline: My scenario has too many parameters
When I perform my request with the following inputs:
| Field | Value |
| param1 | <param1> |
| param2 | <param2> |
| param3 | <param3> |
| param4 | <param4> |
| param5 | <param5> |
| param6 | <param6> |
| param7 | <param7> |
| param8 | <param8> |
| param9 | <param9> |
| param10 | <param10> |
| param11 | <param11> |
Examples:
| param1 | param2 | param3 | param4 | param5 | param6 | param7 | param8 | param9 | param10 | param11 |
| dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy |
| dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy | dummy |
And your step definition becomes:
@When("When I perform my request with the following inputs:")
public void notTooManyAnymore(DataTable table) {
// Use table to get the params
}
Now you can extract the params from the table
(see Data Tables in Cucumber and Cucumber Data Tables). You should be able to map the table to a POJO for some compile time safety.