前言
由于项目准备使用BDD模式开发,所以最近在学习BDD,同时也记录下自己的学习点滴。
参考原文:https://github.com/cucumber/cucumber/wiki/Gherkin
Gherkin是什么
Gherkin,Cucumber解释器可以理解的语言。这是一个商业可读性,领域特定语言,描述软件的行为而不需要关心这个行为的如何实现的。
Gherkin有两个目的 - 文档和自动化测试。第三个额外特色:当它被标记为红色叉叉时,让你知道接下来的代码如何写。
Gherkin的语法定义为Treetop语法(Treetop——基于Ruby的PEG解析器生成器)所以可以被Cucumber解释执行(Cucumber是一个解释程序,就像ruby命令执行解释 .rb文件里的Ruby代码一样,Cucumber用来执行解释 .feature文件里的Gehrkin代码。)。该语法适用在不同的语言中,让您的团队可以使用自己的语言中的关键字。
个人理解:
Gherkin是一种语法,使用 Given,when,then等关键来描述一个User Story。形成的代码不论是User,BA都能读懂的形式,同时也非常便于使用specflow转化成BDD所需要的文件。
通用约定
->Gherkin的单个文件包含对一个功能点的描述
->源文件使用.feature 作为扩展名
Gherkin语法
像Python和YAML,Gherkin是一种面向行的语言,使用缩进来定义结构。行结尾终止语句(例如,步骤)。空格或制表符可用于缩进(但空格更方便些),每一行以关键字开始。
注释允许出现在文件的任何一行,但是要以‘#’开始,仅支持单行注释。
当你开始运行一个行为时,feature关键字的后面部分,也就是详细步骤,这是一段Ruby风格的代码片段,会被解析器分析出所有的功能,情景和步骤。
Gherkin文件格式如下:
: Feature: Some terse yet descriptive text of what is desired
: In order to realize a named business value
: As an explicit system actor
: I want to gain some beneficial outcome which furthers the goal
:
: Scenario: Some determinable business situation
: Given some precondition
: And some other precondition
: When some action by the actor
: And some other action
: And yet another action
: Then some testable outcome is achieved
: And something else we can check happens too
:
: Scenario: A different situation
: ...
一个文件中允许出现多个 Scenario段
园子有人对Gherkin的语法也有很详细的解释建议进一步阅读:http://www.cnblogs.com/puresoul/archive/2011/12/28/2305160.html
建议阅读:
扩展阅读:
欢迎斧正,定当虚心改正。
题外话:
demo正在制作中,后续就在学习BDD中遇到的问题也会分享出来。