黃瓜特色

Cucumber 使用 Gherkin 語法來描述你的軟體在結構化自然語言中的行為。

因此,Cucumber 不是一個測試框架(一個常見的誤解),而是一個系統文件框架,與 Use Case Scenario 等其他框架沒有太大區別。常見的誤解是由於 Cucumber 文件可以自動化以確保它反映真實的系統行為

Cucumber 文件套件由 Features 組成,每個文件都描述了軟體的一個功能,用 Gherkin 編寫並託管在自己的檔案中。通過將這些檔案組織到目錄結構中,你可以對功能進行分組組織

  • 銀行業/
    • withdrawal.feature
    • atm.feature
    • 個人 loan.feature
  • 貿易/
    • portfolio.feature
    • intraday.feature
  • 抵押/
    • evaluation.feature
    • accounting.feature

每個 Feature 都是一個純文字檔案,由一個可選的,非結構化的,純資訊性的介紹部分和一個或多個 Scenarios 組成,每個都代表一個使用條件或用例。

例:

Feature: Documentation
As a StackOverflow user or visitor
I want to access the documentation section
    
    Scenario: search documentation on Stack Overflow
        Given I am on StackOverflow
        And I go to the Documentation section
        When I search for "cucumber"
        And I follow the link to "cucumber"
        Then I should see documentation for "cucumber"

GivenWhenAndButThen 開頭的每一行稱為 Step。任何步驟都可以從任何這些單詞開始,無論順序如何,但通常以最自然的方式使用它們。

功能也可以通過 Tags 進行組織,編輯可以在 FeatureScenario 上進行註釋以進一步對其進行分類。

通過膠水程式碼實現功能的可執行性,膠水程式碼可以用許多不同的語言(Java,Ruby,Scala,C / C++)編寫:每個 Step 與膠水程式碼匹配,以便通過常規識別 Step Definitions(通常縮寫為 StepDef )表示式。

每個 Step 只能有一個相關的 Step Definition

當執行 Feature 時,執行每個組合 Scenario,意味著每個 Scenario 中匹配 Steps 的每個 StepDef 被執行。