cucumber java实战

环境搭建

  1. jdk 1.8 以上版本
  2. maven 3.3 以上版本

项目结构

本项目是以java+maven+junit作为cucumber的驱动框架

最简单的目录结构大概是这样子的:

cucumber java实战_第1张图片
目录结构
  • 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个依赖:

    info.cukes
    cucumber-java
    ${cucumber.version}

    info.cukes
    cucumber-junit
    ${cucumber.version}


    junit
    junit
    ${junit.version}

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{
      }
    

运行测试

  1. 运行单个用例
  • 运行单个用例,可以直接选中某个feature文件,右键run:


    cucumber java实战_第2张图片
    运行单个用例
  • 测试结果可以在控制台看到,如果失败了,会列出详细情况:


    cucumber java实战_第3张图片
    测试结果
  1. 运行一个testsuit
  • 可以直接选中某个RunLoginTest文件,右键run,即可运行


    cucumber java实战_第4张图片
    运行testsuit
  1. 运行整个项目,并生成总体的测试报告
  • 生成报告,需要在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即可
    *报告如下图,绿色是通过,其他颜色是不通过
cucumber java实战_第5张图片
cucumber原生html报告

你可能感兴趣的:(cucumber java实战)