Как насчет использования схемы сценария. Это будет запускать каждую задачу как сценарий сам по себе.
Чтобы избежать повторения Given step
, вы можете настроить статическую логическую переменную в своем определении шага java и проверить ее как флаг.
Scenario Outline:
Given I create a process
When I execute the following task <TaskName> with parameters:
|<Parameter1>|<Parameter2>|<Parameter3>|
Then each task <TaskName> should have outcomes:
|<Outcome1>|<Outcome2>|<Outcome3>|
Examples:
|TaskName|Parameter1|Parameter2|Parameter3|Outcome1|Outcome2|Outcome3|
|task1|t1param1|t1param2|t1param3|t1out1|t1out2|t1out3|
|task2|t2param1|t2param2|t2param3|t2out1|t2out2|t2out3|
.......
Если у вас есть переменное количество параметров и результатов, измените их, используя строку с разделителями символов. Вы можете использовать @Transform annotation
в определении шага, чтобы получить объект параметров или результатов.
Scenario Outline:
Given I create a process
When I execute the following task <TaskName> with parameters <parameters>
Then each task <TaskName> should have outcomes <outcomes>
Examples:
| TaskName | Parameters | Outcomes |
| task1 | t1param1,t1param2,t1param3| t1out1,t1out2,t1out3 |
| task2 | t2param1,t2param2,t2param3| t2out1,t2out2,t2out3 |
.......
Если есть зависимость от одной задачи на исход другой задачи, то вы должны быть осторожны в том, как вы с ними справиться. Вы даже можете добавить шаг сброса, например, убить текущий процесс и т. Д. После вашего текущего шага, если это необходимо в любой из задач.
Последний сценарий --- Это большой взлом, зависящий от идентификатора сценария, остающегося таким же. Добавьте счетчик сценариев в таблицу примеров для последнего шага, как показано ниже.
Scenario Outline:
Given I create a process
When I execute the following task <TaskName> with parameters <parameters>
Then each task <TaskName> should have outcomes <outcomes>
***And Last step to run for last scenario 3***
Examples:
| TaskName | Parameters | Outcomes |
| task1 | t1param1,t1param2,t1param3| t1out1,t1out2,t1out3 |
| task2 | t2param1,t2param2,t2param3| t2out1,t2out2,t2out3 |
| task3 | t3param1,t3param2,t3param3| t3out1,t3out2,t3out3 |
Include in StepDefinition.java
private Scenario scenario;
@Before
public void before(Scenario sce) {
this.scenario = sce;
System.out.println("SCENARIO ID -- " +scenario.getId());
}
вы получите строку как для сценария набросков - **feature-description ; scenariooutline-description ; example-description ; rownumber + 1**
. Например - validating-sample;so1;se1;2
. Это будет для первой строки таблицы примеров.
В случае сценария, который вы можете разделить с разделителем ";" и использовать последнюю часть после вычитания 1. Залейте эту логику в методе getCurrentExamplesRow()
@Then("^Last step to run for last scenario (\\d+)$")
public void lastStep(int size) {
// Will be called only for last scenario in examples...
if(size==getCurrentExamplesRow()) {
}
}
Спасибо Grasshopper, задачи, которые я выполняю, зависят друг от друга и должны выполняться в указанном порядке. Я не думаю, что это будет проблемой, так как это будет вызов без состояния для вызова задачи. – IanWatson
Я проверю это и коротко отвечу – IanWatson
Есть ли способ вырваться из контура сценария? Т.е. выполнить синтаксическую инструкцию после повторения примеров? – IanWatson