读《BDD in Action》(3)

Chapter 5 从 examples 到 可执行的 specifications

把具体的用例编程可执行的 scenario

有一些可以自动执行 Specifications 的软件如 JBehave, Cucumber 等等

下面是一个 Feature 文件:

一个 Feature 文件包含了一些 Scenario

Scenario 的标题简短凝练, 强调与其他 Scenario 的不同, 它们同在一个 Feature 里共享相同的上下文。

Scenario 使用特定的结构,使用特定的关键字

Given 后面的 context 设置了一个舞台, 描述了测试的前提条件, 安装好测试数据, 让应用进入正确的测试状态。有时候只是提供一个说明,没有实际操作。

必须注意的是, 之包含那些与该测试直接相关的先决条件,不然会造成难以理解。

When 后面的是一些要测试的行为事件, 它们会产生输出, 在 Then 里面检验

除了以上基本的关键字, 还有 and 和 but, 让结构更清晰

还可以使用 # 加注释, 也可能使用 !– 引导注释

使用表格消除重复

消除重复的一个很牛的方式就是使用查表法来复用一条流程

从这样的重复

到这样的查表法

Background 关键字 提供 Scenarios 功用的前提条件

Chapter 5 自动化执行 Scenarios

这一章牵扯到具体的实现的使用, 这里不做说明, 因为关于库的使用最好的地方是官方文档。这里只说一些原理性的东西。

一个 Scenario 里包括很多步, 它们会被转化成对应的方法。

这样做的原因是为了避免重复, 实现了文本到代码的转化。也保持了一致性, 一旦修改了某个 Scenario 的某一步, 导致了文本和代码的不一致, 这个 Scenario 就会变为 pending 状态。