文档章节

cucumber 初探

B
 BlueWoods
发布于 2015/05/20 14:12
字数 777
阅读 208
收藏 0

BDD(Behavior Driven Development)是一个比较新鲜的词汇,(大概是吧,更多听到的是TDD); 之前在学习scala的时候,用过scalatest,其中的testcase不再是test,而更多是specification, 描述测试用例用什么样的输入得到什么样的输出,比java test要readable的多。今天看到了cucumber这个开发框架,它可以用来(用更人性化的语言)描述测试用例,可以重复使用测试方法,提供不同的参数, 不仅眼前一亮。

cucumber可以支持java,scala,ruby等多种语言。我只会java,所以就学习了一下它在java中应该怎么使用。它的java的例子比较简单,不能完整的跟着做,所以google了一把,找到一个可行的例子(参考链接);另外在github上面有它自己的几个例子,不用多讲,反而比较好用;

我所讲的例子是从参考例子中copy来,稍作整理;

  1. 项目结构;

2. dependence libraries

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java8</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.2</version>
        <scope>test</scope>
    </dependency>

</dependencies>

3. 定义feature文件

这里定义了一个feature,用来测试Library,定义了两个场景(Scanario): a, 先向Library加入3本书,然后从中按照时间范围搜出符合条件的书;b, 从一个空的library中搜索书籍; 除了前面的关键字,其他部分都是很容易被理解的内容,即使不是程序员也很容易明白要测试什么;

Scenario由输入(Given)和输出(Then),以及执行的操作(When)组成,这些分别和对应的测试方法对应;Cucumber会从这些可读的文本中,抽取出需要的参数,作为对应方法的输入参数;

4. 定义测试步骤Step:

这个测试步骤可以根据不同的测试Scenario被重复使用;

5. 定义Junit驱动程序:

package cucumber.learn.book;

import cucumber.api.CucumberOptions;
import org.junit.runner.RunWith;
import cucumber.api.junit.Cucumber;

/**
 * Created by senyuanwang on 15/5/20.
 */
@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"pretty"})
public class BookSearchTest {
}

6. 测试一把

简单的使用,我觉得它最好用得地方就是可以有一个非常readable的feature文件,这个可以作为程序员和测试,和需求,甚至是和用户直接沟通的文档;另外一个优点就是step java文件可以被重复利用,且不需要写很多的测试用例去提供不同的输入参数;


主页:https://cucumber.io/ 

参考:http://www.hascode.com/2014/12/bdd-testing-with-cucumber-java-and-junit/

git:  https://github.com/cucumber/cucumber-jvm




© 著作权归作者所有

B
粉丝 4
博文 39
码字总数 21286
作品 0
杭州
私信 提问
加载中

评论(2)

B
BlueWoods 博主

引用来自“漫天的沙”的评论

学习了。如果测试业务逻辑应该很有帮助。有没有研究过是否支持并发操作?比如记录删除了再操作。另外有没有中文的学习文档推荐,pdf最好
并发操作和删除记录再操作,似乎没有相关性哎。你说的并发是说并发的跑测试么?这个单个环境下应该是不可以的,因为它利用的还是Junit;如果是说业务是并发的,我觉得主要看怎么写测试用例,和cucumber框架没有关系。看测试的切入点。不过一般情况下,并发的测试都不好写。我也没有中文的文档。
漫天的沙
漫天的沙
学习了。如果测试业务逻辑应该很有帮助。有没有研究过是否支持并发操作?比如记录删除了再操作。另外有没有中文的学习文档推荐,pdf最好
Web Service API 验证--cucumber-api

cucumber-api,用于验证响应格式为JSON的Web Service API。可以用来单独测试Web Service API,或者与Calabash配合进行手机APP和Web Service API的联合测试。 安装步骤: 以Debian环境为例,其...

超爱fitnesse
2015/06/25
1K
0
cucumber 有关链接整理

行为驱动开发之四,为自动化测试(运行Cucumber)提速:http://www.cnblogs.com/jarodzz/archive/2011/09/02/bdd4.html CUCUMBER TUTORIAL:http://www.toolsqa.com/cucumber/first-cucumbe......

智能小松鼠
2015/05/28
561
0
Spring Boot Integration Test With Cucumber and Jenkins Pipeline

Here I am sharing how you can integrate Cucumber for behavior driven testing with Spring Boot integration tests, and how you collect the reports in Jenkins pipeline. In a sample......

Mahmoud Romeh
2017/12/15
0
0
使用RSpec编写具有可读性的功能测试

Chris Zetter是FutureLearn产品组的一名开发者,他为我们讲述了自己的小组为了使功能测试兼具可维护性与可读性,在把Cucumber替换为RSpec之后是如何来编写测试的。 测试是建立与维护一个大型...

鉴客
2014/07/17
760
0
使用cucumber-testng生成的报告没有展示step

使用cucumber-testng插件来执行cucumber feature, build.gradle : testng.xml 运行结果:只显示这个feature的运行结果 但我想像要生成junit这样的报告,有显示每个step的 要怎样做呢?如果有...

cucuTer
2016/11/15
442
0

没有更多内容

加载失败,请刷新页面

加载更多

使用CSS自定义属性构建骨架屏

写在前面 几天前看到薄荷前端团队分享的《前端骨架屏方案小结》,突然回想起一年前看到的max bock写的《Building Skeleton Screens with CSS Custom Properties》,翻译整理写下出此文,分享...

前端老手
昨天
4
0
Docker常用命令小记

除了基本的<font color="blue">docker pull</font>、<font color="blue">docker image</font>、<font color="blue">docker ps</font>,还有一些命令及参数也很重要,在此记录下来避免遗忘。 ......

程序员欣宸
昨天
4
0
MAT使用-jvm内存溢出问题分析定位

1.MAT简介: MAT 全称 Eclipse Memory Analysis Tools 是一个分析 Java堆数据的专业工具,可以计算出内存中对象的实例数量、占用空间大小、引用关系等,看看是谁阻止了垃圾收集器的回收工作,...

xiaomin0322
昨天
4
0
内网和外网之间的通信(端口映射原理)

首先解释一下“内网”与“外网”的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的。但两个局域网内的内网IP可以有相同的...

Jack088
昨天
6
0
3.深入jvm内核-原理、诊断与优化-4. GC算法和种类

一、GC算法和种类 GC的概念 GC算法 引用计数法 标记清除 标记压缩 复制算法 可触及性 Stop-The-World GC的对象是堆空间和永久区 引用计数法 老牌垃圾回收算法 通过引用计算来回收垃圾 使用者...

hexiaoming123
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部