`
sillycat
  • 浏览: 2542622 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Jbehave(1) First Web Page Sample

阅读更多
Jbehave(1) First Web Page Sample

1. jbehave totorial sample
use git bash on my win7 system, from the start menu, choose git bash
>pwd
>cd /d/book/jbehave
>git clone https://github.com/jbehave/jbehave-tutorial.git jbehave-tutorial

change the pom.xml, from
<properties>
    <jbehave.core.version>3.6.SNAPSHOT</jbehave.core.version>
    <jbehave.web.version>3.5.SNAPSHOT</jbehave.web.version>
    <jbehave.site.version>3.1.1</jbehave.site.version>
</properties>

to

<properties>
    <jbehave.core.version>3.5.1</jbehave.core.version>
    <jbehave.web.version>3.4</jbehave.web.version>
    <jbehave.site.version>3.1.1</jbehave.site.version>
</properties>

>mvn install

error messages:
[WARNING] Failed to run story etsy_search.story
org.jbehave.core.failures.UUIDExceptionWrapper: org.jbehave.core.failures.Before
OrAfterFailed: Method beforeStory (annotated with @BeforeStory in class org.jbeh
ave.web.selenium.PerStoryWebDriverSteps) failed: org.openqa.selenium.WebDriverEx
ception: Cannot find firefox binary in PATH. Make sure firefox is installed. OS
appears to be: VISTA

Build info: version: '2.5.0', revision: '13548', time: '2011-08-24 13:44:31'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.ver
sion: '1.6.0_26'
Driver info: driver.version: unknown

Solutions:
download and install Firefox 3.x version in the default directory

>mvn install -Dmeta.filter="+color red"

In a directory target/view, a page named 'reports.html' has been generated.

2. Analynize the sample
etsy-stories-java-spring/src/main/stories/    all the stories are here.
etsy-stories-java-spring/src/main/java/org/jbehave/tutorials/etsy/EtsyDotComStories.java   
This is the entry of the tests.

etsy-stories-java-spring/resources/etsy-steps.xml contains the Spring configuration for composition the steps.

3. Study some concepts and ideas
3.1 Write a textual story
create a textual story file store_locator.story
Store Locator Story

Narrative:
Store Locator Function, we can locate a store.
As a user, we can get the current location.

#Scenario: Get Current Location
#Given open home page
#When click the store locator link
#Then get the store locator page button id is uselocation
#When click the button user location
#Then get the google map, the text is 'No stores found in the specified location'

Scenario: Search the Store Location with 78704
Given open home page
When click the store locator link
Then get the store locator page button id is uselocation
When type in the 78704 ZIP code
Then get some stores, see the map button

Scenario: Search the Store Location with 78730
Given open home page
When click the store locator link
Then get the store locator page button id is uselocation
When type in the 78730 ZIP code
Then get some stores, see the map button

3.2 Map all steps to Java methods
Map all the story to our Java methods:
private Home home;

private StoreLocator storeLocator;

public PetcoSteps(PetcoPageFactory pageFactory) {
home = pageFactory.newHome();
storeLocator = pageFactory.newStoreLocator();
}

@Given("open home page")
public void openHomePage() {
home.go();
}

@When("click the store locator link")
public void clickTheStoreLocatorLink() {
home.goToStoreLocator();
}

@Then("get the store locator page button id is $buttonId")
public void getTheStoreLocatorPage(String buttonId) {
MatcherAssert.assertThat(storeLocator.hasButton(buttonId),
Matchers.is(true));
}

@When("click the button user location")
public void clickTheButtonUserLocation() {
storeLocator.clickUserLocator();
}

@Then("get the google map, the text is $message")
public void getTheGoogleMap(String message) {
MatcherAssert.assertThat(storeLocator.hasText(message),
Matchers.is(true));
}

@When("type in the $zipCode ZIP code")
public void typeTheZipCode(String zipCode) {
storeLocator.typeZIPCode(zipCode);
}

@Then("get some stores, see the map button")
public void getMapButton() {
MatcherAssert
.assertThat(storeLocator.hasMapButton(), Matchers.is(true));
}

3.3 Configuration in Spring
my configuration sample is petco-steps.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

  <bean id="driverProvider" class="org.jbehave.web.selenium.FirefoxWebDriverProvider" >
  </bean>
 
  <bean id="petcoPageFactory" class="com.easybddweb.vendors.petco.pages.PetcoPageFactory">
     <constructor-arg ref="driverProvider"/>
  </bean> 
 
  <bean id="petcoSteps" class="com.easybddweb.vendors.petco.steps.PetcoSteps">
     <constructor-arg ref="petcoPageFactory"/>
  </bean> 

  <bean id="petcoLifecycleSteps" class="com.easybddweb.vendors.petco.steps.PetcoLifecycleSteps">
     <constructor-arg ref="driverProvider"/>
  </bean> 
 
</beans>

4.4 We use maven and plugin to run these tests
<plugins>
<plugin>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-maven-plugin</artifactId>
<version>${jbehave.core.version}</version>
<executions>
<execution>
<id>unpack-view-resources</id>
<phase>process-resources</phase>
<goals>
<goal>unpack-view-resources</goal>
</goals>
</execution>
<execution>
<id>embeddable-stories</id>
<phase>integration-test</phase>
<configuration>
<includes>
<include>${stories}</include>
</includes>
<excludes />
<generateViewAfterStories>true</generateViewAfterStories>
<ignoreFailureInStories>true</ignoreFailureInStories>
<ignoreFailureInView>false</ignoreFailureInView>
<threads>${threads}</threads>
<skip>${skip}</skip>
<metaFilters>
<metaFilter>${meta.filter}</metaFilter>
</metaFilters>
</configuration>
<goals>
<goal>run-stories-as-embeddables</goal>
</goals>
</execution>
<execution>
<id>map-stories</id>
<phase>integration-test</phase>
<configuration>
<includes>
<include>**/*StoryMaps.java</include>
</includes>
</configuration>
<goals>
<goal>map-stories-as-embeddables</goal>
</goals>
</execution>
<execution>
<id>report-stepdocs</id>
<phase>integration-test</phase>
<configuration>
<includes>
<include>${stories}</include>
</includes>
</configuration>
<goals>
<goal>report-stepdocs-as-embeddables</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>

Ok, the first example for web page test is done. The related things are maven2, jbehave, junit, spring, selenium.
The details are in the sample project easybddweb-1.0.zip.

references:
http://jbehave.org/
http://yangzb.iteye.com/blog/309354
http://jbehave.org/introduction/
http://jbehave.org/documentation/
http://jbehave.org/reference/stable/getting-started.html
https://github.com/jbehave/jbehave-tutorial
http://jbehave.org/reference/stable/running-examples.html
http://groups.google.com/group/webdriver/msg/1f307c5a78c6f8d3?pli=1

分享到:
评论

相关推荐

    jbehave-web:https的只读镜像

    JBehave-Web JBehave 是 JBehave 的扩展集合,以与 HTTP 和 Web 相关的方式扩展其功能。模块网络Selenium。 与 Selenium 1.0 和 2.0 的绑定允许 JBehave 在网站上运行。 网络跑者。 一个允许非开发人员同步实验运行...

    jbehave-spring-sample

    1. **配置JBehave**: 首先需要在`pom.xml`中添加JBehave和Spring的依赖,确保项目可以使用这两个库。 2. **创建步骤类**: 在`src/main/java`下创建步骤类,这些类将实现故事文件中定义的行为步骤。 3. **编写故事...

    jbehave.source.4.0.jar

    jbehave source 4.0,详情请查看官网

    jbehave core

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

    jbehave-pico-3.9-beta-4.zip

    1. **JBehave**:这是一个 BDD 框架,它帮助开发者以自然语言编写测试案例,提高代码的可读性和维护性。JBehave 支持多种故事格式,并可以与其他测试框架(如 JUnit 或 TestNG)集成。 2. **PicoContainer**:...

    jbehave-tutorial:jBehave的教程项目

    **1. jBehave 的核心概念** - **故事(Stories)**:在 jBehave 中,故事是描述软件功能的自然语言文本,它们通常由三部分组成:背景(Background)、场景(Scenarios)和步骤(Steps)。背景提供了故事的上下文,...

    jbehave-tutorial-maste

    1. **故事文件**:首先,创建一个故事文件,用Markdown或其他支持的格式编写故事。每个故事都包含一个或多个场景,每个场景又由一组步骤组成。 2. **步骤定义**:然后,你需要编写Java类来实现这些故事中的步骤。...

    jbehave_example:jbehave示例

    1. **自然语言故事**:JBehave支持用简单的英语短语编写测试故事,使非程序员也能理解测试目标。 2. **步骤定义**:每个故事由一系列步骤组成,这些步骤可以通过Java方法进行定义和实现。 3. **故事执行**:JBehave...

    jbehave-core-4.0-beta-11.zip

    1. **JBehave Core**: JBehave 是Java领域的一个BDD框架,它将故事作为测试的中心,这些故事可以以自然语言形式编写,使得非技术人员也能理解。它支持多种故事格式,包括文本、XML和Java注解。JBehave与JUnit、...

    serenity-jbehave-sample

    #jbehave-webtest-todomvc 一个简单的演示项目,将Serenity与JBehave和JUnit结合使用,并针对应用程序运行测试。 该项目使用JDK 1.8和gradle运行。 要运行演示,请运行: gradle clean test aggregateSerenity报告...

    seauto-jbehave-sample

    SeAuto JBehave 示例 介绍 该项目旨在成为那些想要快速实施和使用 SeAuto for JBehave 的模板项目。 设置说明 先决条件: 下载并安装 下载并安装 如果您有偏好,该页面上的任何版本都可以使用 Firefox,用于运行...

    JBehave:BDD框架的简单演示——JBehave

    总之,JBehave项目是一个很好的学习资源,它展示了如何在Java环境中利用BDD框架进行测试驱动开发,以及如何结合Selenium进行Web应用程序的自动化测试。通过研究这个项目,开发者可以提升对BDD的理解,掌握JBehave的...

    thucydides-jbehave-plugin-0.9.20.zip

    1. **Thucydides**:一个强大的Java库,用于自动化Web应用程序的端到端测试,提供详细的测试报告和测试管理工具。 2. **JBehave**:一个BDD框架,允许用自然语言编写测试,使非技术人员也能理解测试目标。 3. **BDD...

    JBehave Maven Report:用于 jbehave 报告的 Maven 插件-开源

    解压 jbehave 站点资源并将 jbehave 报告链接到 maven 报告

    JBehaveTutorial:JBehave 教程的存储库

    1. **示例项目(Sample Projects)**: 包含了使用JBehave编写的测试案例,帮助初学者理解如何组织故事文件和步骤类。 2. **配置文件(Configuration Files)**: 如 `pom.xml`(如果是Maven项目)展示了如何在项目中...

    jbehave-minimal-example:jBehave 测试报告和 jenkins 插件的最小示例

    1. **设置项目结构**:创建一个Maven项目,并配置pom.xml文件,引入jBehave相关的依赖库。 2. **编写故事文件**:使用纯文本格式(如.feature)编写故事文件,描述业务场景。 3. **实现步骤**:根据故事文件中的步骤...

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

    1. **行为驱动开发(BDD)**:BDD是一种软件开发方法,强调以用户需求为导向,通过编写可执行的故事来描述软件行为。在这个项目中,你会学到如何用自然语言表述业务需求,并转化为可测试的代码。 2. **jBehave框架*...

    jbehave-tutorial

    Etsy.com网站上的JBehave Selenium教程教程使用, 和对预先现有的网站展示BDD如何允许Web应用程序的行为的描述和测试。模组“ etsy-selenium”模块运行(通过maven)故事来验证Etsy.com的行为。 它使用Selenium来...

    Serenity-JBehave:宁静-杰贝夫

    1. **什么是 JBehave**: JBehave 是一个 Java 实现的行为驱动开发 (BDD) 框架,它允许开发者使用简洁的自然语言编写测试用例。这些用例以故事的形式描述了软件的功能需求,使得业务人员和开发人员之间能够进行更有效...

Global site tag (gtag.js) - Google Analytics