Cucumber测试框架应用介绍--黄瓜框架

最近陪着女朋友研究了下有关测试的内容,主要是研究了一下Cucumber这个测试框架,说是可以通过DSL来定义基于场景的验收级别测试,当然单元测试等测试也可以实现。由于中文文档很多都没有细致的对Cucumber进行讲解,我就以一篇国外博客中的例子来讲一下Cucumber的基本用法吧!

环境 Intellij IDEA + Spring

https://github.com/Steve-Fenton/JavaKatas/tree/master/NumberGames 这是项目的Github地址,想试一下的朋友都可以clone下来自己跑跑,用maven导入就好了。

https://www.stevefenton.co.uk/2015/01/getting-started-with-bdd-intellij/   有关环境设置的可以参考原文,链接附上。


Cucumber的细节介绍我们就不讲了,如果你还不知道Cucumber可是用来干嘛的话,可以搜一搜别人对它的基本介绍,我们这里只介绍如何应用黄瓜。总的来讲,它是一套定义DSL来验证测试结果的测试框架,用户可以编写自己的DSL,在代码中对该DSL进行解析,程序读取到关键信息后,运行结果并验证。

在这套代码中,Cucumber起到了进行单元测试的作用。Java代码中声明了一个Game类,并可以做简单的数字游戏,如FizzBuzz等(规则:输入一个数字,若为3的倍数输出fizz,5的倍数输出buzz,公倍数输出fizzbuzz)。

我们并不关心Game类是如何实现的,我们只关心Cucumber是如何定义、解析并执行DSL的。

项目结构如下所示:

Cucumber测试框架应用介绍--黄瓜框架_第1张图片


单元测试测试通过黄瓜和Junit来跑,如图所示

Cucumber测试框架应用介绍--黄瓜框架_第2张图片


接下来,我们需要在resources里面书写我们想要的DSL:在本个测试中,我们填入的信息为:

1我在玩fizzbuzz游戏;

2我输入的数组为1;

3我希望输出结果为1。

Cucumber测试框架应用介绍--黄瓜框架_第3张图片


接下来,我们需要编写解析DSL的代码。如下图所示:

Cucumber测试框架应用介绍--黄瓜框架_第4张图片

黄瓜对DSL的解析方式相当直接,直接打入你的话语加一些正则表达对相关参数进行匹配一下就好了,不仅如此,黄瓜还可以识别中文呢。其中,有一些是黄瓜自己的关键字,如Given、And、When、And等。在这里,语句就会自动进行匹配,相应的函数也会被执行。要注意的是,在黄瓜中,同样的语句只能有一个,不能有两个相同的语句,对应不同的执行函数。

你可能感兴趣的:(Cucumber测试框架应用介绍--黄瓜框架)