`
zhangym124
  • 浏览: 339035 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

从JUnit到Rspec的尝试

阅读更多

如今,各种测试框架层出不穷,每一种框架都有其独特性以及各自的优势。本人由于工作的原因,分别先后接触了JUnit以及Respec两套测试框架,虽然研究的不深,但也就这两套框架谈一谈自己的理解。重点主要针对于Rspec框架。

JUnit介绍    

 众所周知,JUnit是一个用Java编写而成的单元测试框架。利用JUnit,我们可以通过编写简单的测试代码,方便的进行白盒测试,也可以说:在了解了被测代码如何工作的前提下,对其内部结构的正确性进行自动化的测试。在JUnit的官网上,我们可以看到有关JUnit更为正统的释义——JUnit是一个开放源代码的简单框架,用来编写和运行可重复的测试(也被称为回归测试)。它是致力于单元测试框架的XUnit架构的一种实现。其中包含了:

1.用于检测预期结果的Assertions

2.用于共享测试数据的Test Fixtures

3.用于运行测试的Test Runners

    在使用JUnit时,其主要投放场景是:a.与开发人员约定好要测的内部方法、或是对外接口(方法名称、参数个数、参数类型等),两边同时开工,开发提测,运行JUnit测试代码。b.根据开发已写好的代码,编写测试代码,校验其正确性。这两种情景都很常见,具体采用哪种,视时间宽松程度而定。

    由于JUnit在很多平台工具上的集成(ANT,Maven,Eclipse,IntelliJ IDEA等),以及配有大量的插件(dbUnit,xmlUnit等),以及其易用性,使其仍是当今单元测试框架的首选。

Rspec介绍    

    前不久,由于需要对Kelude平台建立起一套测试体系,于是便研究起来Respec这一BDD测试框架。说起BDD,我想大家都不陌生,其英文全称为Behaviour Driven Development,即行为驱动开发。Respec就是Ruby社区中最为流行的行为驱动测试框架。关于BDD更详细的介绍,大家可以参考http://qa.taobao.com/?p=11630这篇文章,这里就不再过多介绍。

    要想真正用好Respec,就要遵循其背后的测试思想——测试先行。这也是与JUnit等单元测试框架最大的不同之处。所谓测试先行,就是要求我们,在开发人员编码工作之前,先写好测试用例,然后由测试来推动开发工作。通俗解释为:在设计实现一个功能之前,先考虑好如何来测试这个功能,测试的代码完成后,再编写功能实现代码,并且使得该测试用例运行通过,即完成了系统的一个功能模块。这与通常的JUnit使用场景背道而驰。

    如果在接触Respec的初期,就要求编写Respec测试用例,和编写功能代码的人员角色分开,我想这对于开发人员来说,应该是非常被动和痛苦的,同时也会很大程度上限制开发人员的创造性。因为功能代码的编写目的由原来的实现功能,变为了如今的通过测试用例,无论如何对于开发人员都是一种挑战。因此,初期尝试Respec阶段,我建议测试用例和功能代码的编写都由一个人来承担。也就是说,自己根据业务需求,先写好Respec测试用例,然后再编写功能代码,而编写功能代码的目的就是为了通过测试。这样做的好处,不仅可以最大程度的理解Resepc背后的思想,同时也会逼迫开发人员为了满足易测性,从而写出简洁高质量的代码。这些优点,只有真正尝试过Respec后,才会深有感触。

   Respec在Rails框架中,不仅能针对MVC的Controller层、Model层、View层,进行分层测试,同时也可以针对例如路由等其它层面进行测试,可以说是功能非常全面。

Rspec初体验

    最后,针对于Rails应用搭建Respec环境、以及一些常用的插件做一下简短介绍:

 1.假设Ruby、Rails环境均已安装完成,安装Rspec插件

     gem install rspec

 2. 安装测试数据准备工具Factory Girl

      gem install factory_girl_rails

 3. 安装测试脚本对代码覆盖率的检测工具RCov

      gem install rcov

以上三步安装了进行Respec测试最常用的几个工具。

所有测试代码放在spec目录下,并且与功能代码的目录结构相对应。

下面附上一个Rspec代码文件:

 

如上图:

let 方法主要针对数据准备声明

Factory :XXX 从FactoryGirl 插件中取出预先准备好的数据

describe 对应于一个测试集

it 对应于一个测试用例

 

    每个测试集和测试用例都配有各自的描述信息(测试集名、用例名),这些都是写进测试代码中的,这样做,不仅增加了代码的可读性,同时在执行用例时,一旦用例报错,可以很方便的查看到是对应于哪一部分业务规则的代码出了问题。在测试用例中用通用语言把系统的行为描述出来,把测试代码作为系统的定义文档,将系统的设计和测试用例结合起来,这即是BDD所倡导的。

 

    当想查看测试用例脚本对于功能代码的覆盖情况时,我们可以使用RCov这个工具,通过它,不仅可以通过命令行的形式查看到覆盖率数据,也可以以HTML网页形式查看,非常清晰、具体。

0
0
分享到:
评论

相关推荐

    rspec_junit_formatter, RSpec结果格式化为你的CI可以读取的JUnit.zip

    rspec_junit_formatter, RSpec结果格式化为你的CI可以读取的JUnit RSpec JUnit格式化程序 RSpec 2 & 3结果, Jenkins可以读取。 可能还有其他的CI服务。灵感来自于的工作,在的RSpec格式化程序在对 Reporter的失望...

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...

    junit4.1 junit4.1

    junit4.1junit4.1junit4.1junit4.1junit4.1

    junit的jar包

    Files contained in junit4-4.8.2.jar: LICENSE.txt META-INF/MANIFEST.MF junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions...

    JUNIT介绍JUNIT介绍

    JUNIT介绍.JUNIT介绍.JUNIT介绍.JUNIT介绍.

    JUnit API JUnit API

    JUnit API JUnit API JUnit API JUnit API JUnit API

    Junit入门实验Junit入门实验

    Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验

    junit关于junit的介绍

    关于junit的介绍 关于关于junit的介绍关于junit的介绍关于junit的介绍关于junit的介绍关于junit的介绍关于junit的介绍

    JUnit讲课文档JUnit讲课文档

    JUnit讲课文档JUnit讲课文档JUnit讲课文档JUnit讲课文档JUnit讲课文档JUnit讲课文档JUnit讲课文档

    junit-4.12-API文档-中文版.zip

    赠送jar包:junit-4.12.jar; 赠送原API文档:junit-4.12-javadoc.jar; 赠送源代码:junit-4.12-sources.jar; 包含翻译后的API文档:junit-4.12-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...

    rspec_junit_formatter:CI可以读取的RSpec结果

    您也可以将其与其他结合使用: rspec --format progress --format RspecJunitFormatter --out rspec.xml与Bundler一起在项目中使用如果您使用的是 ,请将其添加到Gemfile中。 将其与rspec放在同一组中。 group :...

    Junit单元测试文档

    junit3 junit4 api,单元测试的利器

    junit-4.13.2-API文档-中文版.zip

    赠送jar包:junit-4.13.2.jar; 赠送原API文档:junit-4.13.2-javadoc.jar; 赠送源代码:junit-4.13.2-sources.jar; 赠送Maven依赖信息文件:junit-4.13.2.pom; 包含翻译后的API文档:junit-4.13.2-javadoc-API...

    JUnit in action JUnit Recipies

    JUnit in Action 中文版英文版 JUnit Recipies好书哦!

    junit4.1.jar

    junit4的jar包,使用annotation进行junit测试!

    JUnit如何使用介绍

    1, 从junit.org官方网站或其他途径下载你需要版本的JUnit包。 2, 把你下载的包释放在自己电脑的某个目录。(比如:D:\java) 3, 把你释放文件中的如:org.junit4_4.3.1文件拷贝Eclipse的\plugins目录下,如果你的...

    junit5.jar

    junit5.jar

    JUnit4JUnit4JUnit4(文档)

    JUnit4

    Junit5.7.2离线jar

    Junit5.7.2 离线jar

    junit安装告诉读者如何安装junit

    junit安装,告诉读者如何安装junit;junit安装,告诉读者如何安装junit;junit安装,告诉读者如何安装junit;junit安装,告诉读者如何安装junit;junit安装,告诉读者如何安装junit;junit安装,告诉读者如何安装junit;

Global site tag (gtag.js) - Google Analytics