如何使用方案大綱。這將把每個任務作爲一個場景來運行。
要避免重複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 |
.......
如果對其他任務的結果一個任務,那麼你必須在你如何處理他們小心任何依賴。你甚至可以添加一個重置步驟,例如,殺死當前進程等,如果在任何任務中需要,則在當前的步驟之後。
最後一個場景---這是一個很大的黑客,它依賴於場景ID保持不變。 如下所示添加示例表中最後一步的方案數量。
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()
謝謝Grasshopper,我正在執行的任務是相互依賴的,必須按指定的順序執行。我不認爲這會是一個問題,因爲這將是一個無狀態的調用任務。 – IanWatson
我會測試一下並很快回復 – IanWatson
有沒有辦法突破場景大綱?即在迭代示例後執行單個語句嗎? – IanWatson