2016-09-27 7 views
0

Я нахожу решение для передачи каждой строки примера схемы сценария как объекта в cucuber-jvm.Как передать Сценарий из строковых данных как объект в методе шага с использованием cucumber-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? Если возможно, кто-то может предложить некоторое предложение с образцом кода.

ответ

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, и огурец будет заполнять данные в объекте.

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

Удивительное решение спасибо за ваш полезный комментарий. Но у меня есть вопрос относительно более поздней части, где вы предоставляете решение, используя объект ValidationData. Я не мог понять, что если я не предоставил данные в части примеров, то как огурец повторяет сценарий со следующими данными? потому что таблица данных не используется для итерации. – saba

+0

@saba Мой плохой ... Плохой выбор слов. Я имел в виду, что огурец будет сопоставлять переменные из заголовка на шаге, а не с таблицей примеров. В противном случае вам понадобится заголовок в таблице примеров, иначе это не сработает. Теперь я поставил весь ответ в своем ответе. – Grasshopper

+0

Спасибо. вы - гений. вы используете выражение lamda для создания DTO. Итак, вы используете Java 8. Я использую Java 7. Поэтому я создаю это, используя класс Inner DTO или отдельный класс POJO. – saba

0

Это скорее комментарий: Не подходит ли вам список аргументов переменной длины? Вам нужно будет знать последовательность ваших параметров, хотя без имен аргументов, чтобы помочь.

public void multiParams(String... val){ 

} 
+0

спасибо за ваш комментарий, но используя это, я получаю ошибку несоответствия Arity. – saba