打印

测试驱动Rails开发

本主题由 maninred 于 2007-12-9 22:35 设置高亮

测试驱动Rails开发

测试驱动Rails开发
引用:
原文标题: Test-Driven Rails Development
原文作者:Brian Leonard
原文地址:http://www.netbeans.org/kb/60/ruby/unittest.html
译者:21st@php?name=Ruby" onclick="tagshow(event)" class="t_tag">Ruby中文社区翻译团队
校对:xiaoqiu@Ruby中文社区翻译团队
译文首发:http://ruby-lang.org.cn/forums/thread-2342-1-1.html
转载请保留本版权信息,违者必究!
Contributed by Brian Leonard and maintained by Beth Stearns
September 2007 [Revision number: V6.0-1]


这篇文章说明了NetBeans IDE如何帮助您测试Ruby和Rails代码. 并为您提供了很多选择使您的程序单元测试更加容易.
内容
-教程的先决条件
-NetBeans IDE对Ruby测试的支持
-单元测试
-自动测试
-Rspec测试

教程的先决条件

在开发过程中,您可以利用Ruby和Ruby On Rails提供的测试功能来帮助您测试或者调试您的项目代码。 这篇文概括描述了常见的些测试功能。
教程的先决条件:
  • 对使用 Ruby 技术进行编程的基础知识
  • 支持Ruby的NetBeans IDE 6.0

NetBeans IDE对Ruby测试的支持

NetBeans IDE支持很多Ruby的测试功能和框架。 我们将向您展示NetBeans IDE是如何支持他们的,并给向您提供一些建议关于如何使用这些功能。 同时会向您演示NetBeans内建功能如何帮助您在代码和测试之间捕获错误信息
在我们概述Ruby相关的测试功能之前,让我们先简短的了解一下单元测试的基本概念。 当我们说单元测试, 我们是在说开发人员针对程序的一个单元部分进行测试,以保证这部分代码工作正常。 一个单元是指应用程序中可以被测试的一小部分代码。 因此,在面向对象编程语言中,一个典型的单元是一个类,或者一个基类,父类,抽象类,派生类(子类)等。 另一方面,在面向过程编程语言中,一个典型的单元可以是一段独立的程序,一个函数,或者一个过程。 注意不要将单元与模块混淆,模块是程序中一个相对较大的组织,模块通常由单元组成。
单元测试通常限定于一组相互之间没有依赖关系的测试用例(test case)。 一个测试用例可以使用模拟(mock)对象,尤其是那些真实环境测试比较困难的对象, 如耗费时间,或者难以产生的对象等. 一个模拟对象通常被用来测试另外一个对象的行为,模拟了真实对象在受控环境下的行为。 一个很好的解释模拟对象例子是用假人来代替真人进行在汽车碰撞实验。
测试执行器,或自动测试框架同样是单元测试的重要部分。 测试执行器是在不同的条件下执行程序单元的代码和测试数据集合, 并持续监听单元的行为和输出,因为这个过程可以重复执行, 所以测试执行器用来自动进行 单元测试

Test::Unit 测试

Ruby内建的测试框架,被设计为一种 Test::Unit。 NetBeans直接支持 Test::Unit, 您可以从项目的“New”菜单直接建立单元测试。 在“Project”窗口,鼠标右击Ruby项目,然后选择 New->Ruby Unit Test.
图 1: 建立 Ruby Test::Unit



New Ruby Unit Test对话框提示您输入单元测试文件的相关信息, 包括对哪一个类执行测试, 测试文件的文件名,所属的模块, 相对于项目目录的目标路径, 当您点击“完成”, IDE会建立一个单元测试的框架文件,您可以在这个文件中添加具体的测试代码。 并将这个文件放置到项目中特定的目录中.
图 2: 建立单元测试文件



有几种方法执行测试或单元测试。 最便捷的方法是使用编辑窗口中内容菜单的“Run File”或“Test File”选项。 (您也可以调用项目窗口中的 Run->Run File来执行)。

“Test File”和 “Run File”比较

Test File (Ctrl+F6) 可以在编辑窗口的内容菜单和“Run”菜单找到, 这是一种比较好的执行测试文件的方法。 您可以直接在测试文件上执行,也可以在被测试的文件上执行。 “Run File”选项也可以在编辑窗口的内容菜单和“Run”菜单两个地方找到, 但要求当前文件是您执行测试用的那个测试文件。 “Test File”的优点是您 可以 对需要测试的源文件上执行测试,而不需要在这个文件的测试文件中执行。
为了说明“Test File”选项的优点, 假设有正在位一个Rails的控制器类编写单元测试。 当前正在编辑的文件是控制器类的测试文件,执行“Run Test”选项,测试文件会被执行。 当然,您也可能正在编辑控制器类, 如果在编辑控制器类的过程中您想测试控制器, 您只需执行“Test File”,或按下Ctrl+F6, 符合这个控制器类的测试文件会被执行。 如果您用“Run File”选项在控制器类, IDE会在浏览器中打开控制器的URL地址。 因此,可以认为“Run File”选项是在浏览器中执行应用程序部分而“Test File”选项执行符合的应用程序部分的测试。

“Test File”和“Run Test”之间还有一个重要的区别。 “Test File”选项在测试文件上应用时,是被作为测试.执行。 “Run File”作为测试执行是告诉IDE一个信号,让IDE将代码作为测试执行并查看执行失败的输出信息。 如果看到当前测试失败,IDE会在编辑窗口的底部显示一个红色的警告信息,类似于自动测试的红条信息。
“Run Project”和“Test Project”也表现出同样的区别。 “Test Project”选项类似测试,可以在项目内容菜单中找到, 执行项目中的所有测试。 (执行项目中的所有测试当前只能对Rails项目起作用) “Run Project”选项实际上是在浏览器中执行当前项目。
图 3: 测试单元测试文件



底部的输出窗口显示单元测试执行结果。 如果测试输出包含链接,您可以通过 Navigate->Next 浏览错误惨淡选项.
图 4: Test::Unit 输出示例



编辑窗口的内容菜单的“Go to Test”动作选项, 可以让你快速在代码与测试用例之间跳转。 鼠标右击编辑窗口的任意位置,弹出菜单并选择 Navigate->Go to Test 选项 (Windwons平台快捷键:Control+Shift+T,apple平台快捷键: Command+Shift+T)。 “Go to Test” 自动识别 Test::Unit约定. 同样也能够识别Rails约定,RSpec约定,以及ZenTest约定。
图 5: Go to Test 命令



自动测试

您的Ruby项目可以使用自动测试功能. 自动测试是指自当您修改代码后,单元测试会被自动执行。 Rails项目或其他项目中, 自动测试能够检测出需要执行的单元测试文件并执行。 如果自动测试不能检测到单元测试文件,那么自动测试将执行所有的单元测试文件。
安装“ZenTest”这个GRMS插件后,就可以使用自动测试功能了。 使用工具“Ruby Gems”选项来安装“ZenTest”或其他的Ruby Gems。 打开“Ruby Gems”对话框,IDE自动加载并显示所有已经安装的RUby Gems和所有可以安装的Gems。 点击“Installer”标签,查看所有已经安装的Ruby Gems。
图 6: 检查已经安装的Ruby Gems



如果”ZenTest“没有安装,点击”New Gems"标签,在列表中找到 zentest, 选择并点击“Install”。
图 7: 安装 “ZenTest” Ruby Gem



您可以看到“ZenTest”以及相关联的库文件,工具已经安装。
图 8: ZenTest 安装信息



“ZenTest”安装完成,您就可以在项目的内容菜单中找到“Auto Test”选项。 在项目窗口鼠标右击Ruby项目节点并选择自动测试来为项目加载自动测试功能。 前面已经提到过,自动测试会在单元测试文件以及代码文件修改后自动执行。
图 9: 执行自动测试



在输出窗口显示自动测试执行的结果。 如果执行失败,自动测试会在编辑窗口底部显示一个摘要信息。 如果输入窗口的自动测试面板被隐藏, 您可以点击自动测试标签来查看输出信息来判断是什么原因造成测试失败。 点击输出信息中的超级链接 可以直接跳转到代码出错的位置。
图 10: 输出窗口和自动测试摘要信息



在自动测试中仍然可以使用“Goto Test”命令快捷键(Ctrl+Shift+T)直接执行相关联的测试文件。
注意: 自动测试支持功能将在不久的将来被提升。 提升包括在任务列表中显示测试失败信息。 提升JRuby对自动测试的支持。 如果在使用JRuby自动测试时碰到问题,可以马上切换为使用原生Ruby来执行自动测试。

RSpec 测试

rspec Ruby Gem 是另外一个单元测试工具。 已经被绑定在NetBeans IDE中的JRuby中,作为JRuby发行版的一部分。 如果你正在使用内置的Ruby解释器,那么rspec就已经被安装好了。 当rspec安装后, 项目目录中会包含一个spec 目录,其中包含了“specification”文件。
如果您决定使用原生Ruby,您可以在选项对话框中切换Ruby解释器。 然后你需要检查rspec是否已经安装。 (见图 6)。 如果没有安装,请点击 Tools->Ruby Gems 然后选择 New Gems 标签 (见图 7)安装。 如果你希望在Rails项目中使用rspec,你需要安装另外一个Ruby Gems插件, 请查看安装指导。
用”Goto Test“指令打开任何一个specification文件。 可以用内容菜单的rspec控制使用”Test File“或”Run File“执行specification, 这意味着测试根据spec目录中的spec.opts文件中specification选项来执行。 注意这里的考虑这里情况跟我们之前已经在“Test File”和 “Run File”比较中讨论过的情况类似。 您可以从IDE中执行测试并使用不同的参数,比如关闭红/绿条显示, 在spec目录中建立一个spec.opts.netbeans文件并包含不同的选项。
spec文件模板目前还不可用,但很快将会被引入。

总结

这篇文章概括介绍了NetBeans IDE开发Ruby应用的测试的功能。 包含了基本的单元测试功能, 自动测试和rspec测试。 并解释了如何在IDE中安装Ruby Gems以及使用IDE的测试快捷键功能。

下几步

  • 查看 跟踪 Ruby 和 Rails 学习 学习更多关于NetBeans IDE对Ruby的支持.
  • 向获得支持或得到有关NetBeans Ruby最新特性的通知, 请加入 users@ruby.netbeans.orgdev@ruby.netbeans.org 邮件列表。
  • 发送您的 NetBeans Ruby教程, 请访问 NetBeans 社区文档 页面。


[ 本帖最后由 maninred 于 2007-12-8 22:21 编辑 ]
附件: 您所在的用户组无法下载或查看附件
###
blog => red_world,
mail => [image]http://services.nexodyne.com/email/icon/NTbKP7EQRA%3D%3D/c2n6Sgw%3D/R01haWw%3D/0/image.png[/image]
###

TOP

帮21st发布文章,到此第二次任务发布完成。
###
blog => red_world,
mail => [image]http://services.nexodyne.com/email/icon/NTbKP7EQRA%3D%3D/c2n6Sgw%3D/R01haWw%3D/0/image.png[/image]
###

TOP

惭愧,翻译初稿后,工作上的事情一直耽误我做完剩下的事情,实在麻烦maninred了,非常感谢,向中文组的兄弟们表示歉意。

TOP

2008-12-05 05:32 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61