文档章节

【JBehave】JBehave介绍

一路向北的兔斯基
 一路向北的兔斯基
发布于 2016/04/20 18:20
字数 994
阅读 96
收藏 1
点赞 1
评论 0
  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 blue
    
    Narrative: 
    
    In order to show the basic cart functionality
    As a user
    I want to add and remove items from the cart
    
    Scenario: Item can be added to cart
    
    Given that the cart is empty
    !-- We don't care for which item is added to the cart
    When I search for an item
    And an item is added to the cart
    Then the cart contains that item
    
    Scenario: Item can be removed from cart
    
    Given the cart contains one item
    When the item is removed
    Then the cart contents is empty
  5. 上面的例子中基本上涵盖了JBehave的所有关键字(标红的词语就是JBehave的关键字)
    Meta:以键值对的方式提供一些关于Story和Scenario的标签信息,我们在运行Story的时候,可以通过这些标签作为过滤项,只运行我们想运行的信息。
    Narrative:对当前Story对应功能的一个描述,和一般Story卡上的描述差不多,In order to ….,As a ……,I want to……。
    Scenario: 关于当前场景的描述
    Given :描述当前场景的Context的Step
    !--    : JBehave中的注释符
    When:描述用户进行操作的Step
    Then: 描述验收用户操作结果的Step,
    And :Step的辅助描述关键字,跟着哪个Step就表示哪个Step的意思,如跟着When后面就表示When。


    另外这个例子中未提到的关键字还有:
    GivenStories:在当前Story中依赖另一个Story。
    Examples:可以指定一系列的数据反复跑一个Scenario。


  6. 一个JBehave的BDD测试的实现步骤
    1)、配置JBehave开发环境
    2)、按照上面的语法和业务领域专家一起写文本Story。
    3)、把文本Story对应到具体执行的java文件中(通过java的Anotation技术)
    4)、配置JBehave的运行规则。
    5)、运行测试
    6)、查看测试报告


本文转载自:http://ningandjiao.iteye.com/blog/1534306

共有 人打赏支持
一路向北的兔斯基
粉丝 7
博文 59
码字总数 23505
作品 0
成都
高级程序员
关于TDD、BDD和DDD的一些看法

在实际的项目中,我们可能随时面对各种不同的需求,它的各个方面的要素决定了我们所采用的开发模式。 比如,它的复杂度如何?所有的需求是否足够清晰?开发人员对相关的业务是否足够了解?项...

Euray
2014/11/16
0
1
【JBehave】通过ant执行jbehave测试

前一篇文章将jbehave和spring进行了集成,并编写了能执行的junit测试类,本篇文章将通过ant执行jbehave测试。因为已经有了junit测试类,其它剩下要做的事情就是简单的通过ant的task将SpringT...

一路向北的兔斯基
2016/04/20
31
0
【JBehave】集成spring测试

通过研究网上的教程(这儿说一句,网上关于jbehave的教程确实有点少)和官网的文档,完成了基于jbehave和spring的整合测试案例,现将相关的代码发出来,供大家。 博主后期应该会大量使用jbe...

一路向北的兔斯基
2016/04/20
54
0
项目组沟通框架--JBehave

JBehave2是一个基于Java的框架,旨在通过自动情景鼓励开发商之间的合作,质量保证系统,BA系统,商业和其他团队成员 主要特点: Plain text scenarios Support for multiple scenarios in a...

匿名
2009/06/17
1K
0
自动化测试平台--phoenixframe

phoenixframe是一个自动化测试平台,集代码托管,分机(node节点)管理,定时任务, 分布式或并发等方式执行通过phoenix_develop模块调试好的用例。 平台使用SSH4开发,覆盖了webgui,接口,...

孟飞阳
2015/06/08
4.1K
1
自动化测试平台--Phoenix Framework

phoenixframework是一个支持对webUI,接口,web性能,mobile app或mobile browser进行自动化测试和监控的平台。 平台官网:http://www.cewan.la 环境搭建及使用说明书:http://my.oschina.n...

孟飞阳
2016/01/18
2.5K
0
《xUnit Test Patterns》学习笔记3 - Philosophy of Test Automation

这一章主要讲自动化测试的原则。前面的章节介绍了很多测试的思想,而思想的东西难免有点虚,这一章就是告诉你,遇到了具体的什么问题时,应该怎么办。作者咨询了很多的开发人员和测试人员,同...

科技小毛
2017/06/06
0
0
TDD的iOS开发初步以及Kiwi使用入门

  测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识。Apple一直致力于在iOS开发中集成更加方便和可用的测试,在Xcode 5中,新的IDE...

江山风雨
07/04
0
0
架构的演进,阿里资深Java工程师表述架构的腐化之谜

前言 新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品和项目的面世...

美的让人心动
05/02
0
0
行为驱动开发(BDD)你准备好了吗?

最近在研究行为驱动开发(Behavior Drive Development ), 那什么是BDD(行为驱动开发)?为什么使用行为驱动开发?用什么框架来做行为驱动开发?行为驱动开发的核心原理是?有行为驱动开发的...

chancein007
2017/08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Laravel5.5 MySQL配置、读写分离及操作

Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考:http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php(但是数据库用户及密码等...

MichaelShu
8分钟前
0
0
Linux 查看用户

存储帐号的文件:/etc/passwd 存储密码的文件:/etc/shadow 查看当前系统所有用户 grep bash /etc/passwd root修改普通用户的密码 sudo passwd user_name 然后连续两次输入新的用户密码即可...

yeahlife
14分钟前
0
0
Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
25分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
30分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
31分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
41分钟前
9
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部