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文件:
然后用Ruby语言定义scenario中的每个步骤 ,并保存为features/step_definitions/addition.rb文件:
- Given /I have entered (/d+) into the calculator/ do |n|
- @calc = Calculator.new
- @calc.push n.to_i
- end
- When /I press (/w+)/ do |op|
- @result = @calc.send op
- end
- Then /the result should be (.*) on the screen/ do |result|
- @result.should == result.to_f
- end
最后编写相应代码 :
- class Calculator
- def push(n)
- @args ||= []
- @args << n
- end
- def add
- @args.inject(0){|n,sum| sum+=n}
- end
- end
并进行测试 :
cucumber feature/addition.feature
如果得到类似于以下的结果,则表明代码无误:
1 scenario (1 passed)
4 steps (4 passed)
0m0.009s
否则,会得到红色提示,则需要修改相应代码。