• 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文件格式如下:
    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
     
     
    建议阅读:
     
    扩展阅读:
    ------------------------- A little Progress a day makes you a big success... ----------------------------
  • 相关阅读:
    基于redis实现可靠的分布式锁
    基于react实现无限分级菜单
    利用免费cdn加速webpack单页应用
    研究一下javascript的模块规范(CommonJs/AMD/CMD)
    基于ReactCSSTransitionGroup实现react-router过渡动画
    react + iscroll5 实现完美 下拉刷新,上拉加载
    如何在多线程leader-follower模式下正确的使用boost::asio。
    【深入浅出Linux网络编程】 “实践 -- TCP & UDP”
    【hbase0.96】基于hadoop搭建hbase的心得
    【hadoop2.2(yarn)】基于yarn成功执行分布式map-reduce,记录问题解决过程。
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/14469653.html
Copyright © 2020-2023  润新知