`

JBehave学习笔记(3)--高级特性介绍

阅读更多
1、Composite Steps
顾名思义就是能够把多个Steps组合为一个Step。例子
Meta:
@author liuxianning
@theme  composite

Narrative: This story is used to show composite steps.

Scenario: Add a student into the class

Given There is a student with default details
When system add the student into class
Then we can get student 'Lincoln2' from class


然后在StudentSteps中增加方法
    @Given("There is a student with default details")
    @Composite(steps = {
            "Given his name is 'Lincoln2'",
            "Given his age is '18'",
            "Given his hobby is 'basketball'",
            "Given his father's name is 'Mike'",
            "Given his mother's name is 'Mary'",
            "Given his brother's name is 'Luis'"
    })
    public void createStudentWithDefaultDetails() {
    }

这样就可以用一句话执行之前已经实现的很多步骤。

2、Tabular parameters
表结构参数,这是一个简化和结构化参数输入的特性,我们可以在一个步骤中把需要传递的多个参数结构化的传递给Step方法。例子:
Meta:
@author liuxianning
@theme  table

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  with details:
|name    |age |hobby      |father name |mother name |brother name|
|lincoln3|18  |basketball |Mike        |Mary        |Luis        |

When system add the student into class
Then we can get student 'lincoln3' from class

可以通过一个Table以键值对的形势来输入参数,在StudentSteps添加对应的方法来接收参数
@Given("There is a student  with details:$details")
    public void setDetails(@Named("details") ExamplesTable details) {
        student = new Student();
        Parameters parameters = details.getRowAsParameters(0);
        student.setName(parameters.valueAs("name",String.class));
        student.setAge(parameters.valueAs("age",Integer.class));
        student.setHobby(parameters.valueAs("hobby",String.class));
        student.setFatherName(parameters.valueAs("father name",String.class));
        student.setMotherName(parameters.valueAs("mother name",String.class));
        student.setBrotherName(parameters.valueAs("brother name",String.class));
    }


3、Examples
Scenario多实例,这个特性主要的目的在于可以使用不同的数据反复执行一个Scenario。例子:
Meta:
@author liuxianning
@theme  examples

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 '$name'
And his age is '$age'
When system add the student into class
Then we can get student '$studentName' from class

Examples:
|name|age|studentName|
|lxn1|18 |lxn1       |
|lxn2|19 |lxn2       |
|lxn3|20 |lxn3       |

该实例中回使用Examples中的数据反复执行该Scenario。

4、Meta Filtering
Meta信息过滤,这个特性允许JBehave指定运行特定的Story或者Scenario。使用方法为在配置Embedder的时候添加上MetaFilter属性。
public Embedder configuredEmbedder() {
        Embedder embedder = new Embedder();
        embedder.useConfiguration(configuration());
        embedder.useCandidateSteps(candidateSteps());
        embedder.useStepsFactory(stepsFactory());
      [color=red]  embedder.useMetaFilters(asList("+theme composite", "-skip"));[/color]
        return embedder;
    }

在标红的代码段中指明了只执行Meta段中属性theme为composite的Story。

5、GivenStories
Story依赖,这个特性让一个Story可以作为另一个Story的Scenario的前提条件。例子
Meta:
@author liuxianning
@theme  givenstories

Narrative: In order to maintian student's info,as a teacher, I want to update a student's name
Scenario: Add a student into the class
GivenStories: AddStudentIntoClass.story
Given Get student "Lincoln"
When system Update student name to "Lin"
Then we can get student 'Lin' from class
分享到:
评论
2 楼 ningandjin 2012-11-09  
fengcanfly 写道
Composite Steps
你写的这个run了以后组合的都是pengding啊!不知道是我写的问题,还是?求解
,你可以debug到Jbehave'的源代码里去看看,其实原理比较简单,Composite的标签会把里面的Steps的字符串数组,变成一个个的candidatestep,执行story的时候,用正则表达式匹配上了就执行。 你那边pending的原因就是你的story语句没有找到对应的step。这是我做练习时候的源码,你可以对比下有什么不同,具体你的情况我不太清楚https://github.com/xianlinbox/ChessDemo/tree/master/src/main/java/steps
1 楼 fengcanfly 2012-11-08  
Composite Steps
你写的这个run了以后组合的都是pengding啊!不知道是我写的问题,还是?求解

相关推荐

    jbehave-pico-3.9-beta-4.zip

    【标题】"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.zip" 提供的是 JBehave Core 框架的4.0 beta 11版本。JBehave 是一个行为驱动开发(BDD)框架,它允许软件团队通过自然语言编写可执行的故事,从而促进更清晰的沟通和更高效的...

    jbehave core

    jbehave core用于BDD Java自动化代码开发jar包

    jbehave-tutorial-maste

    这个“jbehave-tutorial-maste”压缩包很可能是JBehave的一个教程项目,旨在帮助用户了解并熟悉JBehave的基本用法和核心概念。 在JBehave中,故事是BDD的核心,它们描述了系统的功能需求,通常以简洁明了的文本形式...

    jbehave4-scenario-restart

    jbehave4-scenario-restart 此maven项目重现了JBehave 4中的问题,并且在引发RestartingScenarioFailure Exception之后,未重新RestartingScenarioFailure Scenario。 使用JBehave 4.0.1运行 只需执行mvn clean ...

    jbehave4-step-priority

    jbehave4-step-priority PerformableTree正在添加由于元过滤器而被禁止的ExamplePerformableScenario实例。 这会导致大量调用StepFinder.prioritise()方法,从而导致性能下降,尤其是在使用Levenshtein Distance时...

    jbehave-gherkin-3.8.zip

    "jbehave-gherkin-3.8.zip"是JBehave框架的一个版本,JBehave是一个Java实现的BDD框架,它支持Gherkin语法,这是一种用于描述用户故事和业务规则的语言。Gherkin语法简洁明了,使得非技术背景的人员也能理解测试用例...

    thucydides-jbehave-plugin-0.9.20.zip

    标题 "thucydides-jbehave-plugin-0.9.20.zip" 暗示了一个与自动化测试相关的开源项目,其中包含Thucydides JBehave插件的版本0.9.20。Thucydides是一个强大的、用于Web应用端到端测试的Java库,而JBehave是行为驱动...

    jbehave-spring-sample

    **JBehave-Spring-Sample** 是一个基于Java的示例项目,它展示了如何将JBehave测试框架与Spring框架集成使用。这个项目的核心目的是帮助开发者理解如何在Spring环境中编写和执行行为驱动开发(BDD)的测试用例。通过...

    jbehave-testng-example:BDD完整的jBehave入门专案与范例

    "jbehave-testng-example:BDD完整的jBehave入门专案与范例" 这个标题表明这是一个关于行为驱动开发(Behavior Driven Development, BDD)的项目,具体使用了jBehave工具,并结合了TestNG进行测试。jBehave是一个用...

    jbehave-bigdecimal-converter

    jbehave-bigdecimal-converter 这个maven项目演示了JBehave允许BigDecimal(NumberConverter)使用的不良用法。使用Maven运行从终端,只需执行: mvn clean install 由于java.lang.RuntimeException: ********** ...

Global site tag (gtag.js) - Google Analytics