Я хочу переместить многострочный сценарий в схему сценария, чтобы отдельные строки таблицы можно было тестировать как отдельные тесты. Вот упрощенный пример того, что я имею в виду:
Scenario: This scenario loops through the lines of the table performing an assert on each line
When I do something and verify it
| name | parameter1 | parameter2 | parameter3 |
| A and 1 | A | 1 | true |
| B and 1 | B | 1 | false |
| A and 2 | A | 2 | false |
| B and 2 | B | 2 | true |
Определение шага выглядит следующим образом:
@When("I do something and verify it")
public void doSomethingAndVerifyIt(DataTable dataTable) {
List<Map<String, String>> keyValues = dataTable.asMaps();
for (Map<String, String> keyValue : keyValues) {
assertSomething(keyValue.get("parameter1"), keyValue.get("parameter2"), keyValue.get("parameter3"));
}
}
Это работает нормально, но если какая-либо из строк не проходит шаг утверждения , тогда тест останавливается в этой точке. Я хотел бы изменить это на использование схемы сценария вдоль этих линий, чтобы линии могли проходить или проваливаться независимо друг от друга:
Scenario Outline: This scenario loops through the lines of the table performing an assert on each line
When I do something and verify it
Examples:
| name | parameter1 | parameter2 | parameter3 |
| A and 1 | A | 1 | true |
| B and 1 | B | 1 | false |
| A and 2 | A | 2 | false |
| B and 2 | B | 2 | true |
Как изменить определение шага, чтобы каждый раз один строка читается тестом? Я знаю, что я мог бы сделать это, добавив строку под определением шага, которая явно объявляет каждый параметр по имени, но в моем случае это будет связано с огромным количеством параметров.
Есть ли более простой способ сделать это вдоль этих линий:
@When("I do something and verify it")
public void doSomethingAndVerifyIt(Map<String, String> keyValue) {
assertSomething(keyValue.get("parameter1"), keyValue.get("parameter2"), keyValue.get("parameter3"));
}