黄瓜特色
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"
以 Given , When , And , But 或 Then 开头的每一行称为 Step
。任何步骤都可以从任何这些单词开始,无论顺序如何,但通常以最自然的方式使用它们。
功能也可以通过 Tags
进行组织,编辑可以在 Feature
或 Scenario
上进行注释以进一步对其进行分类。
通过胶水代码实现功能的可执行性,胶水代码可以用许多不同的语言(Java,Ruby,Scala,C / C++)编写:每个 Step
与胶水代码匹配,以便通过常规识别 Step Definitions
(通常缩写为 StepDef )表达式。
每个 Step
只能有一个相关的 Step Definition
。
当执行 Feature
时,执行每个组合 Scenario
,意味着每个 Scenario
中匹配 Step
s 的每个 StepDef 被执行。