1、配置JBehave环境。
1)、添加JBehave依赖包,基本的只需要添加jbehave-core和Junit包就足够了。
2)、配置IntelliJ的JBehave插件,详情参见https://github.com/kumaraman21/IntelliJBehave/wiki
2、实现一个JBehave的Story基本过程
JBahave的测试用例主要由3部分组成,描述测试功能的story文件,story文件对应的Steps类和基于Junit的运行配置文件。Steps类是通过Anotation和正则匹配技术把story文件中的文本Step对应到Steps类中的方法,运行配置文件的主要作用是告诉junit去哪儿找story文件和Steps文件,把其配置在同一个Context中。实现一个story的基本过程如下:
1)、写Story
Meta:
@author liuxianning
@theme student
Narrative: In order to get a new student,as a teacher, I want to add a student into the Class
Scenario: Add a student into the class
Given There is a student
And his name is 'Lincoln'
And his age is '18'
And his hobby is 'basketball'
And his father's name is 'Mike'
And his mother's name is 'Mary'
And his brother's name is 'Luis'
When system add the student into class
Then we can get student 'Lincoln2' from class
2)、写Story对应的Steps类
public class StudentSteps {
private ClassRoom classRoom;
private Student student;
@Given("There is a student")
public void initStudent() {
student = new Student();
}
@Given("his name is '$name'")
public void setName(@Named("name")String name) {
student.setName(name);
}
@Given("his age is '$age'")
public void setAge(@Named("age")Integer age) {
student.setAge(age);
}
@Given("his hobby is '$hobby'")
public void setHobby(@Named("hobbu")String hobby) {
student.setHobby(hobby);
}
@Given("his father's name is '$fatherName'")
public void setFatherName(@Named("fatherName")String fatherName) {
student.setFatherName(fatherName);
}
@Given("his mother's name is '$motherName'")
public void setMotherName(@Named("motherName")String motherName) {
student.setMotherName(motherName);
}
@Given("his brother's name is '$brotherName'")
public void setBrotherName(@Named("brotherName")String brotherName) {
student.setBrotherName(brotherName);
}
@When("system add the student into class")
public void addStudentIntoClass(){
classRoom = new ClassRoom();
classRoom.addStudent(student);
}
@Then("we can get student '$studentName' from class")
public void checkGetStudent(@Named("studentName")String studentName){
assertThat(student, is(classRoom.getStudent(studentName)));
}
}
3)、配置运行环境
public class StudentStories extends JUnitStories {
public Configuration configuration() {
return new MostUsefulConfiguration().useStoryLoader(new LoadFromClasspath(this.getClass()))
.useStoryReporterBuilder(new StoryReporterBuilder().withCodeLocation(codeLocationFromClass(this.getClass())));
}
@Override
protected List<String> storyPaths() {
return new StoryFinder().findPaths(codeLocationFromClass(this.getClass()),"**/*.story","");
}
}
4)、执行结果,执行StudentStories类,即可得到运行结果。
《未完待续》
分享到:
相关推荐
【标题】"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 core用于BDD Java自动化代码开发jar包
jbehave4-scenario-restart 此maven项目重现了JBehave 4中的问题,并且在引发RestartingScenarioFailure Exception之后,未重新RestartingScenarioFailure Scenario。 使用JBehave 4.0.1运行 只需执行mvn clean ...
这个“jbehave-tutorial-maste”压缩包很可能是JBehave的一个教程项目,旨在帮助用户了解并熟悉JBehave的基本用法和核心概念。 在JBehave中,故事是BDD的核心,它们描述了系统的功能需求,通常以简洁明了的文本形式...
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-bigdecimal-converter 这个maven项目演示了JBehave允许BigDecimal(NumberConverter)使用的不良用法。使用Maven运行从终端,只需执行: mvn clean install 由于java.lang.RuntimeException: ********** ...