JBehave学习笔记(一)---介绍JBehave
1、什么是JBehave
JBehave是一个用java编写的BDD(Behavior-Driven-Design)框架, java界的Cucumber。(注: 1、BDD主要的目的是能够从业务领域专家的视角来编写测试用例,以解决技术人员和业务领域专家的沟通问题。2、Cucumber是基于Ruby的BDD框架)
2、JBehave的特点
1)、纯Java实现,能调用java API的地方就能使用。
2)、能够定义和执行基于文本的Story,让我们能够从用户价值出发进行开发。(BDD都是这个目的)。
3)、User stories可以放在classpath,也可通过外部URL传进来。
4)、User stories可以并发执行且能够指定并发执行的线程数。
5)、可以通过一些用户定义的信息把User Stories形成一部完整文档。
6)、通过Anotation把Story的步骤对应到Java类中,还能够把自动把Story中的String参数转换成方法对应的参数类型。(How?)
7)、基于Anotation的运行配置信息,指定Story对应的Steps类文件
8)、支持通过第三方IOC容器(Spring,Guice,PicoContainer,Weld)管理配置信息和Steps类
9)、支持通过Groovy写配置信息和Steps文件
10)、支持报表,既可以生成可读性良好的报表格式(HTML,TXT ),还支持Json,XML格式供外部程序调用。
11)、未实现的步骤会自动标记Pending
12)、支持任何语言书写Story
13)、可以使用Junit或者任何基于anotation的测试框架运行Story测试
14)、支持Maven,Ant集成,通过脚本运行BDD测试脚本。
3、JBehave的结构
Story:系统想要具有的功能
Scenario:Story描述的功能的Key-Example 。插一句,如果一个功能你不能想出一个很好的例子,那么你就需要好好想想这个功能的价值了。个人感觉,此处借用了《Specification By Examples》的思想,以实例说明功能更容易让人理解。
Steps:Scenario中描述的实例的具体执行步骤。
4、JBehave的语法
下面就是一个JBehave story的例子
Meta:@category basic@color blueNarrative: In order to show the basic cart functionalityAs a userI want to add and remove items from the cartScenario: Item can be added to cartGiven that the cart is empty!-- We don't care for which item is added to the cartWhen I search for an itemAnd an item is added to the cartThen the cart contains that itemScenario: Item can be removed from cartGiven the cart contains one itemWhen the item is removedThen the cart contents is empty