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" })
})