用Ruby和JtestR来促进Java测试
用Ruby来完成脚本任务是很方便的,这使得Ruby成为开发测试套件的强有力的候选人。直到最近,还没有真正独立的用Ruby来测试Java的框架。Ola Blini(JRuby团队的成员)和Anda Abramovici开发了JtestR,使得开发者可以用Ruby来测试Java了。Ruby再加上强大的Ruby工具,例如RSpec,mocha,会让编写Java测试的工作变得更容易。
用Ruby来完成脚本任务是很方便的,这使得Ruby成为开发测试套件的强有力的候选人。直到最近,还没有真正独立的用Ruby来测试Java的框架。Ola Blini(JRuby团队的成员)和Anda Abramovici开发了JtestR,使得开发者可以用Ruby来测试Java了。Ruby再加上强大的Ruby工具,例如RSpec,mocha,会让编写Java测试的工作变得更容易。
RSpec已经成为领域特定语言和行为驱动开发(BDD,测试驱动开发的一种)的共同宠儿。新发布的RSpec 1.1为Rails提供了更好的支持,并加入了其他诸多改进。
RSpec是一个为Ruby编写的基于行为驱动开发的验收测试框架,同时也可用于Java,它提供了一种机制,即由开发人员从业务中获取验收标准并将它们转换为可读、可运行的示例。Dan North构建了一个独立的扩展——RBehave,用于在RSpec中描述故事级别的集成测试。David Chelimsky已经把类似RBehave的功能添加到了RSpec trunk中。
和MRI(Matz's Ruby Interpreter,标准Ruby实现)相比,Rubinius虚拟机是一个调了个个儿的Ruby实现:它的内核实现方式和Smalltalk的虚拟机如出一辙,而绝大部分代码使用Ruby编写。我们采访了Ribinius项目领导人Evan Phoenix,来了解项目的进展和虚拟机的内部情况。
JRuby的核心团队的两名成员Ola Bini和Charles O. Nutter对微软的IronRuby持怀疑态度。由于微软的政策,对于IronRuby是否可能成为一个完全符合标准的Ruby实现,并能运行Rails这个问题,他们表示质疑。此外,Charles建议关注IronRuby另外一个可行的替代物——Ruby.NET编译器。
Evan Phoenix创立了Rubinius项目,一个用Ruby编写的Ruby VM。最近他刚刚被EngineYard招至旗下,将把一半工作时间用于Rubinius的开发之上。这意味着所有的Ruby实现(Ruby、JRuby、IronRuby、XRuby和Rubinius)都已经有相应公司雇用开发人员着手它们的开发工作了。
Ruby实现的数量在稳固增长着,但目前还是有一样遗漏的东西:Ruby的实现。Ruby语言和它标准库的行为被定义在官方Ruby实现的代码之中。有两个Google SoC项目计划通过为Ruby创建可执行RSpec规格来解决这个问题。InfoQ就此采访了项目之一的Pedro Del Gallego。
14个Ruby项目入围Google的“暑期编程”(Google Summer of Code)奖励计划。项目包括Rails调试工具、为Ruby编写RSpec规范的项目,以及使用EventMachine和Ragel进行协议实现的项目等等。