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.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...
随机推荐
- C语言_结构体的4种定义初始化方式及案例
结构体是一种构造数据类型 (构造数据类型:数组类型.结构体类型(struct).共用体类型(union)).用途:把不同类型的数据组合成一个整体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一 ...
- iOS开发引入第三方类库的问题
在开发iOS程序的过程中,通常在导入第三方的类库(.a/.o)文件会报出一系列的错误: Undefined symbols for architecture i386: "std::stri ...
- Dockerfile 编译安装mysql5.7 千万不要执行.只是记录一下编译安装罢了
开启所有核心make 20G 内存都不够玩,跑3-4个核心吧,还好. 最后的出来的镜像3G多,百思不得其解,看了官方的Dockerfile,也没什么特别,就是 apt 或者 yum.好吧,不知做了什 ...
- 文本处理三剑客之grep&正则表达式
grep是一个文本过滤工具,它支持正则表达式,能把搜索匹配到的行打印出来.grep的全称是Global Regular Expression Print(全局正则表达式)使用权限是所有用户. 一.gr ...
- 工业级GBDT算法︱微软开源 的LightGBM(R包正在开发....)
看完一篇介绍文章后,第一个直觉就是这算法已经配得上工业级属性.日前看到微软已经公开了这一算法,而且已经发开python版本,本人觉得等hadoop+Spark这些平台配齐之后,就可以大规模宣传啦~如果 ...
- 使用WinDbg内核调试
首先你要配置好测试环境:参考VMware+Windgb+Win7 内核驱动调试 在你的主机上配置Symbols 配置sympath,C:\Users\Admin\Desktop\first\objch ...
- mysql常用基础操作语法(二)~~对表的增删改操作【命令行模式】
1.修改表名:alert table oldtablename rename newtablename; 或者alert table oldtablename rename to newtablena ...
- VS2010 C++学习(5):基于DirectShow的视频预览录像程序
VS2010 C++学习(5):基于DirectShow的视频 预览录像程序 学习VC++编制的基于DirectShow视频捕获程序,主要练习基于DirectShow程序的应用. 一. ...
- FusionCharts饼图中label值太长怎么解决
FusionCharts饼图中label值太长怎么解决 1.使用hoverText属性 <?xml version="1.0" encoding="UTF-8&qu ...
- solaris启动过程详解
在Sparc平台下,Solaris系统中有一个类似PC BIOS的芯片程序(EEPROM OpenBoot)负责识别分区.文 件系统和加载内核,在Solaris 2.6之后的版本中,默认的内核文件存放 ...