Cucumber 是一個支援行為驅動開發 (BDD) 的工具。如果您是行為驅動開發的新手,請先閱讀我們的 BDD 簡介。
什麼是 Cucumber?
好的,既然您知道 BDD 是關於探索、協作和範例(而不是測試),讓我們來看看 Cucumber。
Cucumber 會讀取以純文字撰寫的可執行規格,並驗證軟體是否按照這些規格執行。規格由多個範例或情境組成。例如:
Scenario: Breaker guesses a word
Given the Maker has chosen a word
When the Breaker makes a guess
Then the Maker is asked to score
每個情境都是 Cucumber 要逐步完成的步驟列表。Cucumber 會驗證軟體是否符合規格,並產生報告,指出每個情境的 ✅ 成功或 ❌ 失敗。
為了讓 Cucumber 理解情境,它們必須遵循一些基本的語法規則,稱為 Gherkin。
什麼是 Gherkin?
Gherkin 是一組語法規則,它使純文字結構化到足以讓 Cucumber 理解。上面的情境是用 Gherkin 撰寫的。
Gherkin 有多個用途:
- 明確的可執行規格
- 使用 Cucumber 進行自動化測試
- 記錄系統實際的行為方式
Cucumber 語法有多種不同風味,適用於許多口語語言,以便您的團隊可以使用您自己的語言中的關鍵字。
Gherkin 文件儲存在 .feature
文字檔中,通常與軟體一起在原始碼控制中進行版本控制。
有關更多詳細資訊,請參閱Gherkin 參考。
什麼是步驟定義?
步驟定義將 Gherkin 步驟連接到程式碼。步驟定義執行步驟應執行的動作。因此,步驟定義將規格硬連結到實作。
┌────────────┐ ┌──────────────┐ ┌───────────┐
│ Steps │ │ Step │ │ │
│ in Gherkin ├──matched with──>│ Definitions ├───manipulates──>│ System │
│ │ │ │ │ │
└────────────┘ └──────────────┘ └───────────┘
步驟定義可以用許多程式語言編寫。以下是使用 JavaScript 的範例:
When("{maker} starts a game", function(maker) {
maker.startGameWithWord({ word: "whale" })
})