Cucumber框架入门篇

栏目: 编程工具 · 发布时间: 5年前

内容简介:Cucumber介绍Cucumber是一个支持BDD(Behavior Driven Development),即行为驱动开发的自动化测试框架。在进行单元测试或者集成测试之前,事先将测试的步骤和验证信息用通用的语言(英语)定义好,使得测试的步骤、单元测试和集成测试每一步执行的目的能被非开发人员读懂,并且写单元测试和集成测试的人员可以依据事先写好的框架进行代码的编写,达到行为驱动开发的目的。Cucumber框架的搭建
编辑推荐:

本文来自于csdn,本文主要介绍如何搭建Cucumber框架,以及Cucumber各文件的作用,和框架的修改,希望对您的学习有所帮助。

Cucumber介绍

Cucumber是一个支持BDD(Behavior Driven Development),即行为驱动开发的自动化测试框架。在进行单元测试或者集成测试之前,事先将测试的步骤和验证信息用通用的语言(英语)定义好,使得测试的步骤、单元测试和集成测试每一步执行的目的能被非开发人员读懂,并且写单元测试和集成测试的人员可以依据事先写好的框架进行代码的编写,达到行为驱动开发的目的。

Cucumber框架的搭建

1. 将Cucumber插件导入eclipse中,此处同其他插件导入方法相同,不作说明。

2. 新建 Java 工程,将Cucumber所需要的jar包导入Java工程中(最好新建一个文件夹,将jar包放到该文件夹下)。

Cucumber框架入门篇

Cucumber框架入门篇

3.通过Build Path添加刚导入的JARs

Cucumber框架入门篇

Cucumber框架入门篇

Cucumber框架入门篇

Cucumber框架入门篇

4. 新建用来定义步骤的feature格式的文件,新建的feature格式文件会自动填写模板文件,具体使用方法后续说明。同上,最好将其放在特定的文件夹里,本例为Feature文件夹。

Cucumber框架入门篇

Cucumber框架入门篇

Cucumber框架入门篇

5. 将被测试的包导入Java工程中,本例测试一个简单的Calculator类。

Cucumber框架入门篇

6. 新建一个包,包名必须为test.java或main.java否则后续创建Cucumber定义步骤时会出错。

7. 在test.java包中新建一个Step-Definition class。

Cucumber框架入门篇

Cucumber框架入门篇

Cucumber框架入门篇

Cucumber框架相关文件及其内容的说明

1. .feature文件

定义了测试的步骤,包括以下几个关键字

Feature:一个.feature文件有且仅有一个Feature关键字。描述要测试的对象,一般为测试标题。

Scenario:一个.feature文件可以有0个或多个Scenario关键字。测试对象的场景,如测试Add( )方法,可以有两个整数相加和两个负数相加等多种场景。

Given:一个.feature文件有且仅有一个Given关键字。相当于测试用例中的预置条件。如想要表达多个预置条件,可以通过And关键字添加。

When:一个.feature文件有且仅有一个When关键字。具体的操作步骤,类似于测试用例中的操作步骤。如想要表达多个操作步骤,可以通过And关键字添加。

Then:一个.feature文件有且仅有一个Then关键字。相当于测试用例的中的预期结果。如想要表达多个预期结果,可以通过And关键字添加。

And:一个.feature文件可以有0个或多个And关键字。And元素可以补充额外的预置条件或操作步骤。

But:一个.feature文件可以有0个或多个But关键字。But和And一样,可以同Given、When、Then连用,用于添加否定类型的描述,一般只适用于负面条件。比如:

THEN login should be successful.

BUT home page should not be missing

Scenario Outline:一个.feature文件可以有0个或多个Scenario Outline关键字。用于场景中有多组数值时,必须配合Example一起使用,成对出现。

Examples:和Scenario Outline成对出现,其下有多组测试数值的列表2. Step-definition文件

Cucumber的Step-definition和其他的java格式文件基本相同,但是在创建时可以根据需要选择性勾选并自动添加Give、When、Then、And、But注释。

Cucumber框架入门篇

完成后会自动生成一个java模板文件,包括了之前勾选的注释,本例勾选了Given、When、Then和And。注释的格式为:

@关键字("^******$")

@Given("^you are in Given annotation$")

关键字后括号里的内容必须和先前定义的.feature文件的关键字的内容一一对应,识别大小写并且包括空格数目等都要一样,以^开头,$结尾。注释之后为具体实现的方法,在方法中添加符合关键字后描述的操作的代码。

3. 测试执行文件

Cucumber的测试执行文件一般为一个空的Junit Test Case,即不需要Test注释,更不需要Before和After等注释。当必须添加RunWith注释和CucumberOptions注释。

RunWith注释每一个Cucumber框架的测试文件都是相同的,为RunWith(Cucumber.class)。CucumberOption注释的内容是根据实际情况需要手动更改的。

CucumberOptions注释选项一般有features、glue、monochrome和dryrun等。其中。features和glue是必写项,monochrome和dryrun选填项。

features定义了.feature文件的相对路径,格式为features=“.feature文件在该工程的文件夹/.feature文件的名字”。eg. features="Feature/calculatorAdd.feature"

glue定义了Step-difinition的包名,格式为glue=”完整的包名”。eg. test.java.cucumberDefinition。

monochrome选项有两个值,分别为true和false,默认为false,格式为monochrome=boolean。用来控制测试结果的可读性,当monochrome=true时,测试结果可读性更好。monochrome=true时,测试结果可读性比较差。

dryrun选项暂时不了解。

Cucumber框架的使用

通过以上介绍,Cucumber框架基本搭建完成,对Cucumber各文件的作用也有所了解,接下来就是通过对框架的修改来实现一个简单的BDD模式的单元测试。

测试Calcualtor类中的Add( )成员方法

1. 新建testAdd.feature文件,并修改其内容

@tag
 Feature: Test add function of calculator
 @tag1
 Scenario: Add two numbers
 Given init the object of calculator
 When clear the result to zero
 And add num1 and num2
 Then check the actual result
 

2. 新建stepDefinition.java文件,使用Given、When、Then和And关键字,修改注释内容并根据注释内容填写方法中的代码。

package test.java.cucumberDefinition;
 
 import cucumber.api.java.en.Given;
 import cucumber.api.java.en.When;
 import cucumber.api.java.en.Then;
 
 import static org.junit.Assert.assertEquals;
 
 import com.calculator.Calculator;
 
 import cucumber.api.java.en.And;
 
 public class stepDefinition {
 Calculator cal;
 int result;
 @Given("^init the object of calculator$")
 public void given() throws Throwable {
 cal= new Calculator();
 }
 
 @When("^clear the result to zero$")
 public void when() throws Throwable {
 cal.clear();
 }
 
 @Then("^add num1 and num2$")
 public void then() throws Throwable {
 cal.add(2);
 cal.add(3);
 }
 
 @And("^check the actual result$")
 public void and() throws Throwable {
 int expected = 5;
 result = cal.getResult();
 assertEquals(expected,result);
 }
 
 }
 

3. 新建一个Junit Test Case,并将其内容清空,最后添加RunWith和CucumberOptions注释。

package com.calculator.test;

import static org.junit.Assert.*;

import org.junit.Test;

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;

import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)

@CucumberOptions(features="Feature/calculatorAdd.feature"

,glue="test.java.cucumberDefinition",monochrome=true)

public class testAdd {

}

4. 右键testAdd.java,执行run as junit case进行测试。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解TCP/IP : 第5版

图解TCP/IP : 第5版

[日]竹下隆史、[日]村山公保、[日]荒井透、[日]苅田幸雄 / 乌尼日其其格 / 人民邮电出版社 / 2013-7-1 / 69.00元

这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。 本书适合计算机网络的开发、管理人员阅读,也可作为大专院校相关专业的教学参考......一起来看看 《图解TCP/IP : 第5版》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具