黄瓜特色

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 被执行。