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 进行自动化测试
  • 记录系统 *实际* 的行为方式

Single source of Truth

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

您可以帮助我们改进此文档。编辑此页面.