入門與協助

如何開始使用 Cucumber?

若要從頭開始,請試用10 分鐘教學

您可以閱讀這些文件以深入瞭解GherkinCucumberBDD。還有幾個關於 Cucumber 和 BDD 的部落格文章連結。

在哪裡可以取得更深入的資訊?

如果您想更深入瞭解,請嘗試下列其中一種

在哪裡可以獲得協助?

如有問題,您可以與社群取得聯繫

安裝與執行 Cucumber

如何安裝 Cucumber?

如何安裝 Cucumber 取決於您使用的程式設計語言。

您可以在安裝頁面上找到如何安裝您的 Cucumber 版本資訊。

我應該使用哪個版本的 Cucumber?

一般而言,建議為您的程式設計語言使用最近發布的 Cucumber 版本。每個版本都會修正已知的錯誤和/或新增功能。

您可以在10 分鐘教學安裝頁面或GitHub中找到最近版本的 Cucumber。

升級

Cucumber 嘗試遵循SemVer規格進行版本號碼設定。基本上,這表示

  • 如果只有版本中右手邊的(修補程式)號碼變更,則您無需擔心。
  • 如果版本中的中間(次要)號碼變更,則您無需擔心。
  • 如果左手邊的(主要)號碼變更,您可以預期可能會發生問題。

如何執行 Cucumber?

如需如何執行 Cucumber 的資訊,請參閱執行 Cucumber

如何從 CLI 執行 Cucumber?

如需如何執行 Cucumber CLI 的資訊,請參閱從命令列

執行 Cucumber 的組態選項有哪些?

如需組態選項的資訊,請參閱組態

Cucumber 說我的步驟未定義,但我已實作步驟定義!

如果 Cucumber 告訴您您的步驟未定義,而您已定義步驟定義,這表示 Cucumber 無法找到您的步驟定義。您需要確保正確指定您的步驟定義(膠合路徑)的路徑。

Cucumber 運算式與 regex

如需有關 Cucumber 運算式的更多資訊,請參閱Cucumber 運算式上的章節。您仍然可以使用正規表示式(regex),但是您不能在同一個步驟定義中使用 Cucumber 運算式和正規表示式。

如何使用 lambda 定義步驟定義?

如何呼叫其他步驟或情節?

每個情節都應該是獨立的;您應該能夠以任何順序或平行執行它們,而不會有一個情節干擾另一個情節。

每個情節都應該只測試一件事情,以便在失敗時,其失敗的原因會很清楚。這表示您不會在另一個情節內重複使用一個情節。

如果您的情境使用相同或相似的步驟,或在您的系統上執行相似的動作,您可以提取輔助方法來執行這些操作。

如何使用輔助方法

輔助方法允許您在步驟中重複使用動作,並避免為相似的行為撰寫多個步驟定義。您可以為諸如登入您的應用程式之類的動作撰寫輔助方法,然後將它們重複用作步驟或其他步驟的一部分。這有助於保持您的測試乾淨、簡潔且易於維護。

要了解更多關於使用輔助方法的資訊,請查看輔助方法步驟定義分組

情境應該有多詳細?

您的情境應該包含足夠的資訊來描述系統的行為。它們不應描述您應用程式的實作方式,因為實作方式可能會變更,導致您的測試失敗。它們不應包含太多細節,因為這會分散對實際行為的注意力。

讓我們用一個例子來說明。假設我們有一個流程,使用者會收到結果的通知。目前,這可能是透過發送電子郵件來實現的,但未來可能會改變(例如,改為簡訊)。您可以按如下方式指定步驟

Then the user will be notified

這樣,如果通知使用者的方式的實作方式發生變化,您只需要更改步驟定義(或該步驟定義呼叫的輔助方法),而不是步驟本身以及所有底層程式碼。

如需更多資訊,請查看撰寫更好的 Gherkin 和/或 撰寫可維護的自動化驗收測試(pdf)。

如何在 Excel / csv 中指定我的測試案例?

我們建議您不要使用 Excel 或 csv 檔案來定義您的測試案例;使用 Excel 或 csv 檔案被認為是一種反模式。

Cucumber 的目標之一是擁有可執行的規格。這表示您的 feature 檔案應該包含適當程度的資訊來記錄系統的預期行為。如果您的測試案例保存在單獨的檔案中,您將如何閱讀文件?

這也表示您的 feature 檔案不應該有太多細節。如果有,您可以考慮將它們移到您的步驟定義或輔助方法。例如,如果您有一個表單需要填寫許多不同的欄位,您可以使用建構者模式來執行此操作。

如何讓 Cucumber 有條件地跳過步驟

每個情境都應該測試一件事,並且因一個特定的原因而失敗。這表示沒有理由跳過步驟。

如果看起來確實有理由讓您想有條件地跳過步驟,您可能正在使用一種反模式。例如,您可能正在嘗試在一個情境中測試多件事情,或者您可能無法控制測試環境或測試資料的狀態。

這裡最好的方法是找出根本原因並加以解決。

如何在步驟失敗後讓 Cucumber 執行跳過的步驟

Cucumber 會按設計跳過失敗步驟之後的所有步驟。一旦某個步驟失敗,測試就會失敗,沒有理由執行後續步驟。如果您需要執行額外步驟,很可能是您的情境一次測試太多不同的事情。請考慮將您的情境分成較小的測試。

在(失敗)步驟之後截圖

當情境失敗時截圖可能會幫助您找出問題所在。若要在失敗時截圖,您可以設定一個after hook

關於如何使用 截圖並將它們嵌入 Cucumber 報告中的範例,請參閱瀏覽器自動化頁面。

請注意,在每個步驟之後截圖都被視為反模式。您應該能夠依靠您的測試自動化,而無需使用螢幕截圖來檢查情境的每個步驟。您的自動化應該是穩定的,並且測試應該因明確的原因而失敗。

在主控台輸出中取得奇怪的字元

如果您在步驟的輸出中收到一些奇怪的額外字元,例如 [32m,這是轉義 ANSI 顏色代碼的問題。

如何在步驟之間共享狀態?

參數不匹配

參數不匹配例外表示該步驟未提供步驟定義所需的正確參數數量。

重複的步驟定義

DuplicateStepDefinitionException 表示您已經定義了相同的步驟兩次。首先,當匹配步驟時,Cucumber 不會區分與特定步驟一起使用的關鍵字。這表示 Given an order existsThen an order exists 都會匹配「an order exists」。當使用 Cucumber 運算式和/或正規運算式提供參數時,多個步驟可能會匹配相同的運算式。最後,這表示您不能擴展定義步驟定義的類別,因為這會導致重複。

Cucumber-JVM 是否支援 Kotlin?

您可以使用 Cucumber-JVM 以 Kotlin 撰寫步驟定義。請查看cucumber-jvm 的 Kotlin 範例。目前,無法在 Kotlin 中產生步驟定義。原因是因為沒有實作 Kotlin 後端。如果您想為此做出貢獻,有一個相關請求。還有一個關於 Cucumber 的原生 Kotlin 實作 的請求。

Cucumber 無法在 IntelliJ IDEA 中找到我的步驟定義

在這種情況下,您需要在 IntelliJ IDEA 中設定新的執行配置。1. 從 IntelliJ IDEA 的選單中點擊 Run > Edit Configurations。2. 點擊左上角的 + 圖示,然後輸入 cucumber。選擇 Cucumber Java。3. 根據 JetBrains 的 執行/偵錯配置 Cucumber Java 指示建立配置。

如果 IntelliJ IDEA 無法識別包含步驟定義的套件,您可以在 Glue 欄位中輸入套件名稱(例如 stepdefs)來手動指定。

如需更多資訊,請參閱 JetBrains 文件中的執行 Cucumber 測試

如何修正 Cucumber-JVM 錯誤,其堆疊追蹤包含 'Failed to instantiate public cucumber.runtime.java.JavaBackend' 或 'NoSuchMethodException'?

檢查所有 Cucumber 依賴項的 Cucumber 版本是否相同,並確保您只有必要的依賴項。這表示您需要確保您取得與您擁有的 Cucumber 版本相關的傳遞依賴項。

您可以執行 mvn dependency:tree 來查看所有 Maven 依賴項,包括傳遞依賴項。

如果您正在使用任何其他也包含 Cucumber 依賴項的程式庫(傳遞依賴項),請嘗試在您的 pom 檔案中排除該傳遞依賴項,以確保只引用一個版本的 Cucumber。請參閱 Maven 的 排除依賴項說明,了解有關排除傳遞依賴項的步驟。

您可以幫助我們改進此文件。編輯此頁面