环境搭建
- jdk 1.8 以上版本
- maven 3.3 以上版本
项目结构
本项目是以java+maven+junit作为cucumber的驱动框架
最简单的目录结构大概是这样子的:
目录结构-
src\main
:存放一些与cucumber无关的代码,主要用于辅助测试的,比如一些测试数据准备等等。 -
src\test\java
:存放step的定义类和testsuit类,该目录下没有结构和命名规定,可以随意定义。 -
src\test\resources
:存放feature文件。 - 注意:如果step定义文件放在
src\test\java\features
下,那feature文件一定要放在src\test\resources\features
路径下,否则将报Undefined step
的错误。
依赖的包
-
pom.xml
要添加如下3个依赖:
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
</dependency><dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
cucumber用例写法
-
LoginTest.feature的写法:
Feature: 登录
"""
这是一个栗子
"""
Scenario: 作为一个已注册的用户,输入正确的账号和密码能正常登录
Given 存在用户账号为 13800138000 ,密码为 12345678
When 用账号 13800138000 ,密码 12345678 登录
Then 返回结果为 登录成功 -
Stepdefs.java的写法,里面的方法名可以随意定义:
package features;import com.gateway.DataFactory; import com.gateway.UserProto; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; import org.assertj.core.api.Assertions; /** * Created by wuwx on 2016/8/6. */ public class Stepdefs { String loginResult = null; @Given("^存在用户账号为 (\\S*) ,密码为 (\\S*)$") public void hasUser(String phone, String password) throws Throwable { DataFactory df = new DataFactory(); df.createUser(phone, password); } @When("^用账号 (\\S*) ,密码 (\\S*) 登录$") public void login(String phone, String password) throws Throwable { loginResult = UserProto.login(phone, password).getDescription().getContent(); } @Then("返回结果为 (\\S*)") public void checkResult(String expect) throws Throwable{ Assertions.assertThat(loginResult).isEqualTo(expect); } }
-
RunLoginTest.java的写法,方法名可以随意定义,features属性需要定义该testsuit想要执行的features文件的路径:
package features;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;/** * Created by wuwx on 2016/8/6. */ @RunWith(Cucumber.class) @CucumberOptions(monochrome = true, features = "src/test/resources/features/") public class RunLoginTest{ }
运行测试
- 运行单个用例
-
运行单个用例,可以直接选中某个feature文件,右键run:
运行单个用例 -
测试结果可以在控制台看到,如果失败了,会列出详细情况:
测试结果
- 运行一个testsuit
-
可以直接选中某个RunLoginTest文件,右键run,即可运行
运行testsuit
- 运行整个项目,并生成总体的测试报告
- 生成报告,需要在RunLoginTest.java里面添加一些plugin属性,"html:target/cucumber-report/"指定生成的html报告路径:
@CucumberOptions(monochrome = true,
features = "src/test/resources/features/",
plugin ={"pretty",
"html:target/cucumber-report/",
"json:target/cucumber-report/cucumber.json"
}) - 配好了之后,执行IDE的maven插件test,或者在命令行下执行
mvn clean test
即可
*报告如下图,绿色是通过,其他颜色是不通过
网友评论