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
上面的例子中基本上涵盖了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。
5、一个JBehave的BDD测试的实现步骤
1)、配置JBehave开发环境
2)、按照上面的语法和业务领域专家一起写文本Story。
3)、把文本Story对应到具体执行的java文件中(通过java的Anotation技术)
4)、配置JBehave的运行规则。
5)、运行测试
6)、查看测试报告
分享到:
相关推荐
【标题】"jbehave-pico-3.9-beta-4.zip" 提供的是 JBehave 的一个版本,这是基于 PicoContainer 框架的一个行为驱动开发(BDD)库。JBehave 是一种流行的 Java 测试框架,它允许开发者以自然语言的方式来编写测试...
【标题】"jbehave-core-4.0-beta-11.zip" 提供的是 JBehave Core 框架的4.0 beta 11版本。JBehave 是一个行为驱动开发(BDD)框架,它允许软件团队通过自然语言编写可执行的故事,从而促进更清晰的沟通和更高效的...
这个“jbehave-tutorial-maste”压缩包很可能是JBehave的一个教程项目,旨在帮助用户了解并熟悉JBehave的基本用法和核心概念。 在JBehave中,故事是BDD的核心,它们描述了系统的功能需求,通常以简洁明了的文本形式...
jbehave core用于BDD Java自动化代码开发jar包
jbehave4-scenario-restart 此maven项目重现了JBehave 4中的问题,并且在引发RestartingScenarioFailure Exception之后,未重新RestartingScenarioFailure Scenario。 使用JBehave 4.0.1运行 只需执行mvn clean ...
jbehave4-step-priority PerformableTree正在添加由于元过滤器而被禁止的ExamplePerformableScenario实例。 这会导致大量调用StepFinder.prioritise()方法,从而导致性能下降,尤其是在使用Levenshtein Distance时...
"jbehave-gherkin-3.8.zip"是JBehave框架的一个版本,JBehave是一个Java实现的BDD框架,它支持Gherkin语法,这是一种用于描述用户故事和业务规则的语言。Gherkin语法简洁明了,使得非技术背景的人员也能理解测试用例...
标题 "thucydides-jbehave-plugin-0.9.20.zip" 暗示了一个与自动化测试相关的开源项目,其中包含Thucydides JBehave插件的版本0.9.20。Thucydides是一个强大的、用于Web应用端到端测试的Java库,而JBehave是行为驱动...
**JBehave-Spring-Sample** 是一个基于Java的示例项目,它展示了如何将JBehave测试框架与Spring框架集成使用。这个项目的核心目的是帮助开发者理解如何在Spring环境中编写和执行行为驱动开发(BDD)的测试用例。通过...
"jbehave-testng-example:BDD完整的jBehave入门专案与范例" 这个标题表明这是一个关于行为驱动开发(Behavior Driven Development, BDD)的项目,具体使用了jBehave工具,并结合了TestNG进行测试。jBehave是一个用...
jbehave-minimal-example项目就是这样一个最小示例,它展示了如何结合这两个工具,实现自动化测试和报告的生成。通过学习和实践这个示例,你可以更好地掌握jBehave和Jenkins的使用,为你的Java项目带来更加完善的...