Gherkin学习笔记

前言
由于项目准备使用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文件格式如下:
 
 1: Feature: Some terse yet descriptive text of what is desired
 2:   In order to realize a named business value
 3:   As an explicit system actor
 4:   I want to gain some beneficial outcome which furthers the goal
 5: 
 6:   Scenario: Some determinable business situation
 7:     Given some precondition
 8:       And some other precondition
 9:      When some action by the actor
10:       And some other action
11:       And yet another action
12:      Then some testable outcome is achieved
13:       And something else we can check happens too
14: 
15:   Scenario: A different situation
16:       ...

一个文件中允许出现多个 Scenario段

 
园子有人对Gherkin的语法也有很详细的解释建议进一步阅读:http://www.cnblogs.com/puresoul/archive/2011/12/28/2305160.html
 
 
建议阅读:
 
扩展阅读:
 
欢迎斧正,定当虚心改正。
 
题外话:
demo正在制作中,后续就在学习BDD中遇到的问题也会分享出来。
 
posted @ 2013-10-29 22:24  袁家小黑球  阅读(2698)  评论(0编辑  收藏  举报