如何进行高效的Rails单元测试

发表于:2011-6-30 16:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李冠德    来源:51Testing软件测试网采编

  在笔者开发的系统中,有大量的数据需要分析,不仅要求数据分析准确,而且对速度也有一定的要求的。没有写测试代码之前,笔者用几个很大的方法来实现这种需求。结果可想而知,代码繁杂,维护困难,难于扩展。借业务调整的机会,笔者痛定思痛,决定从测试代码做起,并随着不断地学习和应用,慢慢体会到测试代码的好处。

  ● 改变思路:能做到从需求到代码的过程转换,逐步细化;

  ● 简化代码:力图让每个方法都很小,只专注一件事;

  ● 优化代码:当测试代码写不出来,或者需要写很长的时候,说明代码是有问题的,是可以被分解的,需要进一步优化;

  ● 便于扩展:当扩展新业务或修改旧业务时,如果测试代码没有成功,则说明扩展和修改不成功;

  ● 时半功倍:貌似写测试代码很费时,实际在测试、部署和后续扩展中,测试代码将节省更多的时间。

  环境搭建

  笔者采用的测试环境是比较流行通用的框架:RSpec + Factory Girl,并用autotest自动工具。RSpec是一种描述性语言,通过可行的例子描述系统行为,非常容易上手,测试用例非常容易理解。Factory Girl可以很好的帮助构造测试数据,免去了自己写fixture的烦恼。Autotest能自动运行测试代码,随时检测测试代码的结果,并且有很多的插件支持,可以让测试结果显示的很炫。

  第一步 安装rspec和rspec-rails

  在命令行中执行如下命令:

$ sudo gem install rspec v = 1.3.0
$ sudo gem install rspec-rails v = 1.3.2

  安装完成后,进入rails应用所在的目录,运行如下脚本,生成spec测试框架:

$ script/generate rspec         
    exists  lib/tasks
identical  lib/tasks/rspec.rake
identical  script/autospec
identical  script/spec
    exists  spec
identical  spec/rcov.opts
identical  spec/spec.opts
identical  spec/spec_helper.rb

  第二步 安装factory-girl

  在命令行中执行如下命令:

$ sudo gem install factory-girl

  在config/environment/test.rb中,加入factory-girl这个gem:

config.gem "factory_girl"

  在spec/目录下,增加一个factories.rb的文件,用于所有预先定义的model工厂。

  第三步 安装autotest

  在命令行中执行如下命令:

$ sudo gem install ZenTest
$ sudo gem install autotest-rails

  然后设置与RSpec的集成,在rails应用的目录下,运行如下的命令,就可以显示测试用例的运行结果。

RSPEC=true autotest or autospec

  在自己的home目录下,增加一个.autotest设置所有的Rails应用的autotest插件。当然,也可以把这个文件加到每个应用的根目录下,这个文件将覆盖home目录下的文件设置。autotest的插件很多,笔者用到如下的plugin:

$ sudo gem install autotest-growl
$ sudo gem install autotest-fsevent
$ sudo gem install redgreen

  设置.autotest文件,在.autotest中,加入如下代码。

require 'autotest/growl'
require 'autotest/fsevent'
require 'redgreen/autotest'

Autotest.add_hook :initialize do |autotest|
  %w{.git .svn .hg .DS_Store ._* vendor tmp log doc}.each do |exception|
    autotest.add_exception(exception)
  end
end

51/512345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号