• Cucumber 行为驱动开发简介


    Cucumber 是一个能够理解用普通语言 描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具,用Ruby编写,支持Java和.Net等多种开发语言。

    现在看看Cucumber中用到的术语 。

    在Cucumber中,每个用例用一个feature表示 ,其基本格式如下:
    Feature: 描述 
      <story> 

      <scenario 1> 
      ... 
      <scenario N> 

    其中,story对feature进行描述 ,其常用格式如下:
    In order <目的> 
    As a <角色> 
    I want <功能描述> 
    So that <商业价值> 

    每个feature可由若干个scenario 构成,用以描述系统的行为 ,其常用格式如下:
    Scenario Outline: 描述 
      Given <条件> 
      When <事件> 
      Then <结果> 
    如果有多个条件等,可以用关键字And或But进行连接。每个步骤中,可选参数用"<>"标识。

    scenario中的每个步骤都需要被定义 ,其格式如下:
    关键字 /正则表达式/ do |参数名| 
      代码 
    end 
    这里 的参数来自于正则表达式,均为字符串类型。


    下面看看如何用Cucumber进行开发 (参考自这个 例子)。

    首先编写feature ,并保存为feature/addition.feature文件:

    Feature: Addition
      In order to avoid silly mistakes
      As a math idiot
      I want to be told the sum of two numbers
     
      Scenario Outline: Add two numbers
        Given I have entered <input_1> into the calculator
        And I have entered <input_2> into the calculator
        When I press <button>
        Then the result should be <output> on the screen
     
      Examples:
        | input_1 | input_2 | button | output |
        | 20 | 30 | add | 50 |

    然后用Ruby语言定义scenario中的每个步骤 ,并保存为features/step_definitions/addition.rb文件:

    [ruby] view plain copy
     
    1. Given /I have entered (/d+) into the calculator/ do |n|  
    2.   @calc = Calculator.new  
    3.   @calc.push n.to_i  
    4. end  
    5. When /I press (/w+)/ do |op|  
    6.   @result = @calc.send op  
    7. end  
    8. Then /the result should be (.*) on the screen/ do |result|  
    9.   @result.should == result.to_f  
    10. end   



    最后编写相应代码 :

    [ruby] view plain copy
     
    1. class Calculator  
    2.   def push(n)  
    3.     @args ||= []  
    4.     @args << n  
    5.   end  
    6.    
    7.   def add  
    8.     @args.inject(0){|n,sum| sum+=n}  
    9.   end  
    10. end   



    进行测试 :
    cucumber feature/addition.feature 

    如果得到类似于以下的结果,则表明代码无误:
    1 scenario (1 passed) 
    4 steps (4 passed) 
    0m0.009s 

    否则,会得到红色提示,则需要修改相应代码。

  • 相关阅读:
    框架学习之Spring 前言
    XML学习第二节 DTD介绍
    JavaScript重学 V512视频
    框架学习之Spring 第五节 SSH整合开发[Spring2.5+Hibernate3.3+Struts2]
    XML学习第一节 XML简介
    框架学习之Spring 第四节 Spring集成JDBC组件开发
    歌曲:酒干倘卖无 背后的故事
    又要被学校开除了!
    linux常用命令
    心情
  • 原文地址:https://www.cnblogs.com/yuanchunli/p/5477646.html
Copyright © 2020-2023  润新知