我们团队使用的Cucumber作为我们的功能测试框架。Cucumber是一种BDD(Behaviour driven development)测试框架。感兴趣的读者可以去Cucumber的官网了解BDD和该框架更详细的信息:点击这里。在这里我就不详细描述了。
那么这和本文要说的Cuke4Duke有什么关系呢?实际上Cucumber是ruby编写的,原生的也只对ruby编写测试提供支持。而Cuke4Duke就像是给Cucumber提供一个包装器,让你可以使用Java编写测试。后文我将交换着使用Cucumber和Cuke4Duke。
我们在使用Cuke4Duke的时候也碰到了一些问题。比如原生的Cucumber是可以通过ruby的at_exit回调,在测试跑完之后执行点代码,但是Cuke4Duke里却没有这么一个回调。Cuke4Duke里有Before和After等annotation,但是这些annotation标记的方法是在每个场景开始之前之后执行的,而没有提供整个测试跑完之后的回调方式。
所以我就想通过修改源代码的方式添加一个AfterAll的标签。为了实现这个我们得首先对Cuke4Duke以及Cucumber有个基本的了解。本文的目的就是简单的介绍下Cuke4Duke和Cucumber是个啥东西。
对于Cucumber优点我只简单描述一下:它可以更好管理测试用例,更好的协调QA和开发人员的工作(当然,我对其了解也不太深)。
举个例子,如果我们要开发一个用户登录页面,QA先写好测试用例,然后开发人员来实现。而且我们想将这些测试用例和代码很好的结合起来管理,而不是放到一个Excel文件里。如果你使用Cucumber你可以这样做:QA编写下面这样的features文件:
1: //login.feature
2:
3: Feature: 用户登录页面
4: In order 访问到需要授权的内容
5: As a 未登录用户
6: I want to 登录网站
7:
8: Scenario:登录网站
9: Given 我打开登录页面
10: And 输入用户名和密码
11: When 点击登录按钮
12: Then 登录成功,页面跳转到首页,并在右上角显示用户名