文档章节

【JBehave】JBehave介绍

一路向北的兔斯基
 一路向北的兔斯基
发布于 2016/04/20 18:20
字数 994
阅读 114
收藏 1
  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
博文 61
码字总数 24122
作品 0
成都
高级程序员
私信 提问
代码越少越干净吗?

在我眼中,干净的代码就是简单、易于理解的代码。不过分设计,模板文件尽可能地少,语义明确。那么,这样是否就意味着代码越少越干净呢? 我不这么认为。大多数情况下,更少的代码往往语义更...

manong51
2015/05/10
3
0
Selenide:Selenium WebDriver驱动的自动化测试框架

SELENIDE是什么? Selenide是一个由Selenium WebDriver驱动的自动化测试框架,具备以下优点: 简练的流式API 支持Ajax稳定性测试 强大的真正页面对象选择器 使用Selenium无需考虑怎样关闭浏览...

程序猿拿Q
2018/12/20
0
0
2014优雅代码第二线上活动会议纪要

代码链接: https://coding.net/u/wangrong/p/ElegentCode/git 开发流程的经验(可以根据自己适合的方式来做) 15号工作(大概半小时) **************************************************...

王蓉
2014/12/01
98
0
关于TDD、BDD和DDD的一些看法

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

Euray
2014/11/16
0
1
Ruby 的未来

我并不是一个非常守旧的Ruby爱好者。我从2005年开始接触Ruby,那时跟我一起的还有很多极限编程(XP)的同事,我们都加入了Rails 大潮。传说很多Ruby爱好者都是在那个时代从敏捷/极限编程社区转...

oschina
2012/11/07
7.7K
70

没有更多内容

加载失败,请刷新页面

加载更多

百度黄埔学院将培养一批首席AI架构师,为“国之重器”赋能

深度学习高端人才不仅是AI发展的重要养分,也是企业转型AI巨大推动力。2019年1月19日,百度黄埔学院——深度学习架构师培养计划在百度科技园举行开学典礼,深度学习技术及应用国家工程实验室...

深度学习之桨
34分钟前
2
0
扒站wget仿站

wget -c -r -p -np -k http://xxx.com/xxx 其中: -c, --continue (断点续传) 接着下载没下载完的文件 -r, --recursive(递归) specify recursive download.(指定递归下载) -p, --page...

临江仙卜算子
37分钟前
2
0
Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
今天
2
0
如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
4
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部