即使其中一個步驟失敗,是否有任何方法可以繼續執行Cucumber步驟。在我目前的設置,當一步失敗,黃瓜跳過剩餘的步驟....我不知道是否有某種方法來扭轉黃瓜亞軍安裝..在失敗後繼續運行黃瓜步驟
我可以註釋掉失敗的步驟,但它不實用,當你不知道哪個步驟將失敗...如果我可以繼續剩下的步驟,我會知道一次完整的失敗測試集......而不是循環過週期...
環境:Cucumber JVM,R,Java ,Ibatis,Spring Framework,Maven
即使其中一個步驟失敗,是否有任何方法可以繼續執行Cucumber步驟。在我目前的設置,當一步失敗,黃瓜跳過剩餘的步驟....我不知道是否有某種方法來扭轉黃瓜亞軍安裝..在失敗後繼續運行黃瓜步驟
我可以註釋掉失敗的步驟,但它不實用,當你不知道哪個步驟將失敗...如果我可以繼續剩下的步驟,我會知道一次完整的失敗測試集......而不是循環過週期...
環境:Cucumber JVM,R,Java ,Ibatis,Spring Framework,Maven
在步驟失敗後繼續執行步驟並不是一個好主意,因爲步驟失敗可能會使世界處於不變的違規狀態。更好的策略是增加場景的粒度。不要用幾個「Then」語句編寫單個場景,而要使用示例列表分別測試每個後置條件。有時場景大綱和示例列表可以合併類似的故事。 https://cucumber.io/docs/reference#scenario-outline
有一些關於添加特徵來標記特定步驟以在故障後繼續的討論。 https://github.com/cucumber/cucumber/issues/79
一種方法是捕獲所有斷言錯誤,並在最後一步中決定是否失敗或通過測試用例。在這種情況下,您可以調整它,比如說,檢查任何步驟,看看是否有超過n個錯誤並且通過測試,如果是的話。
這裏是我做了什麼:
檢查StringBuffer以確定測試用例是否失敗。
StringBuffer verificationErrors;
// Initialize your error SringBuffer here
@Before
public void initialize() {
verificationErrors = new StringBuffer();
}
// The following is one of the steps in the test case where I need to assert something
@When("^the value is (\\d+)$")
public void the_result_should_be(int arg1) {
try {
assertEquals(arg1, 0);
}
catch(AssertionError ae) {
verificationErrors.append("Value is incorrect- "+ae.getMessage());
}
檢查的StringBuffer在@After或測試用例的最後一步,以確定是否可以通過它還是失敗,如下所示:
if (!(verificationErrors.size()==0)) {
fail(verificationErrors.toString());
}
唯一的問題是在報告中,所有步驟看起來都很綠,但測試用例看起來失敗了。然後,您可能需要查看錯誤字符串以瞭解哪些步驟失敗。只要存在斷言錯誤,您就可以向該字符串添加額外信息,以幫助您輕鬆找到該步驟。
「唯一的問題是,在報告中,所有步驟看起來都很綠,但測試用例看起來失敗。」這正是你不想這樣做的原因。 – Ariejan 2014-04-16 08:25:29
我看到這是從幾年前,但如果你可以,請你更新斷開的鏈接? – pelican 2016-09-26 14:15:01