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
否则,会得到红色提示,则需要修改相应代码。
Cucumber 行为驱动开发简介的更多相关文章
- Android HAL层与Linux Kernel层驱动开发简介
近日稍微对Android中的驱动开发做了一些简要的了解. HAL:Hardware Abstract Layer 硬件抽象层,由于Linux Kernel需要遵循GPL开源协议,硬件厂商为了保护自己硬 ...
- Cucumber测试驱动开发
Cucumber是一种BDD实践开发工具,属于敏捷开发的组成部分. 在敏捷开发中,对用户进行需求分析时,不是像传统的P&D的开发方式,首先编写大量的用户需求分析文档,而是通过一个个 ...
- 行为驱动开发BDD和Cucunber简介
测试驱动开发(TDD) 1.测试驱动开发,即Test-Driven Development(TDD),测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前 ...
- 1、课程简介-Spring 注解驱动开发
1.课程简介-Spring 注解驱动开发
- 基本数据结构简介--ath9k网卡驱动开发总结(二)
ath9k驱动代码主要数据结构概览. (1)在ath9k的驱动中,几乎是最顶层的数据结构是ath_softc,这个数据结构几乎随处可见.ath_softc是硬件与MAC层进行交互的中间载体,很多有用的 ...
- 驱动开发--【字符设备、块设备简介】【sky原创】
驱动开发 字符设备,块设备,网络设备 字符设备 以字节流的方式访问, 不能随机访问 有例外,显卡.EEPROM可以随机访问 EEPROM可以擦写1亿次,是一种字符设备,可以随机访问 读写是 ...
- .NET里的行为驱动开发
BDD (Given - When - then) Ruby Cucumber, Java FitNesse , Python RoboFramework, C# specflow nspec .NE ...
- 驱动开发入门——NTModel
上一篇博文中主要说明了驱动开发中基本的数据类型,认识这些数据类型算是驱动开发中的入门吧,这次主要说明驱动开发中最基本的模型--NTModel.介绍这个模型首先要了解R3层是如何通过应用层API进入到内 ...
- SLAM+语音机器人DIY系列:(四)差分底盘设计——4.底盘ROS驱动开发
摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...
随机推荐
- MysqL_SELECT FOR UPDATE详解
先来举一个在某些应用场景下会出现数据不一致的例子,当然存储引擎是InnoDB(至于为什么,后面再告诉你). 电商平台常见的下单场景: 一般商品表(goods)有基本的四个字段,id(主键),goods ...
- C++学习,两个小的语法错误-network-programming
1.bool CServerSocket::initSocket(const char* ip=NULL,const UINT &port)://会出现默认参数为2的错误 解决方案: //C+ ...
- Java版连连看
连连看大家应该都玩过,不多说直接上一个做好的界面截图吧,所有的功能都在上面的,要做的就只是如何去实现它们了. 差不多就是这个样子.先说一下大致的思路吧.首先编写基本的界面:把什么按钮啊,表格啊什么的都 ...
- Django里使用open函数
Django里使用open函数 前言 在Django里使用open函数打开一个文件的时候,常常会遇到路径错误的问题.我在Django APP里写了一个爬虫用于为网站提供数据,但是需要打开文件,也就是在 ...
- Oracle总结【PLSQL学习】
PLSQL介绍 PLSQL是Oracle对SQL99的一种扩展,基本每一种数据库都会对SQL进行扩展,Oracle对SQL的扩展就叫做PLSQL... SQL99是什么 (1)是操作所有关系型数据库的 ...
- ssh (Spring , Struts2 , Hibernate)框架的配置使用
思维导图(基本配置) 1. 需要引入的包 2 .spring-config.xml 的配置 <!-- 链接数据库 外部配置文件扫入 --> <context:property-ove ...
- android自定义View的绘制原理
每天我们都会使用很多的应用程序,尽管他们有不同的约定,但大多数应用的设计是非常相似的.这就是为什么许多客户要求使用一些其他应用程序没有的设计,使得应用程序显得独特和不同. 如果功能布局要求非常定制化, ...
- R语言︱常用统计方法包+机器学习包(名称、简介)
一.一些函数包大汇总 转载于:http://www.dataguru.cn/thread-116761-1-1.html 时间上有点过期,下面的资料供大家参考基本的R包已经实现了传统多元统计的很多功能 ...
- MyEclipse保存出现错误
1.错误描述 Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 'S ...
- dojo加载树报错
1.错误描述 error loading undefined children. TypeError:this._arrayOfTopLevelItems is undefied. 2.错 ...