InfoQ

新闻

用Ruby和JtestR来促进Java测试

作者 Sebastien Auvray译者 曹云飞 发布于 2008年1月10日 上午9时8分

社区
Ruby,
Java
主题
单元测试
标签
Maven,
Mocks,
Buildr,
Ant,
RSpec,
JRuby
用Ruby来完成脚本任务是很方便的,这使得Ruby成为开发测试套件的强有力的候选人。直到最近,还没有真正独立的用Ruby来测试Java的框架。Ola BliniJRuby团队的成员)和Anda Abramovici开发了JtestR,使得开发者可以用Ruby来测试Java。

这个项目主要是一些由JRuby集成在一起的Ruby库套件。这其中也包括在Ruby领域中非常有名的库:RSpec(用于行为驱动开发),mocha(用于mock与stub), dust(描述性程序块语法测试定义,descriptive block syntax test definition),测试/单元以及 ActiveSupport (Ruby工具类)。

你可以这样写测试用例(RSpec非常聪明):
import java.util.HashMap

describe "An empty", HashMap do
 before :each do
 @hash_map = HashMap.new
 end
 it "should be able to add an entry to it" do
 @hash_map.put "foo", "bar"
  @hash_map.get("foo").should == "bar"
 end
 it "should return a keyset iterator that throws an exception on next" do
 proc do
 @hash_map.key_set.iterator.next
 end.should raise_error(java.util.NoSuchElementException)
 end
end
JtestR可以作为Ant的一个任务,支持与AntbuildrMaven2的集成。

由于JtestR依赖于JRuby(JRuby正在进行密集的开发),如果你经常运行你的测试,你应该建立服务器Ant任务来避免JRuby过长的启动时间(在入门教程中将有进一步的描述)。

JtestR目前是0.1.1版本,还处于早期阶段,欢迎你的反馈来指导它将来的发展方向。

查看英文原文Boost your Java Test with Ruby and JtestR

相关赞助商

InfoQ中文站Java社区,关注企业Java社区的变化与创新,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Java技术社区提供一流资讯。

没有回复

回复

独家内容

书评:敏捷模式──指向成功的路标

Ryan Cooper对Amr Elssamadisy的新书发表了评价,并认为书中提供了一种为实施敏捷量身定做的框架。本书并没有给出一种人人可用的敏捷方法,而是为读者提供一些模式和工具,用以找出哪些敏捷实践可以最有效地达到该组织机构的特定目标。

构建的可伸缩性和达到的性能:一个虚拟座谈会

这个由业界主要专家们参加的座谈会探究了在使应用程序具备尽可能好的伸缩性及性能的过程中所面临的挑战和思考过程。

OpenSocial的分析与实现

本视频主要对OpenSocial进行了分析,并对实现的方式进行了介绍。其中包括:OpenSocial的开发经验、Container Provider的技术准备、平台的构成要素、具体的规范、以及对未来的展望。

缓存系统MemCached的Java客户端优化历程

Memcached在大型网站被应用得越来越广泛,但是Java客户端并不多,本文作者基于现有的开源客户端进行了封装优化,并翔实记录了这一过程。

超越SOA:动态业务应用的新企业应用框架(2)

在他们文章的第二部分,作者探讨了动态业务应用的架构并介绍了资源容器的概念。他们示范了如何在JEE之上构建这个架构,以及它如何影响实现生产力。

使用ClickOnce细分发布版本

ClickOnce让WinForms应用程序的部署轻而易举。David Cooksey演示了如何在ASP.NET中编写一个HttpHandler来实现对ClickOnce部署的版本细分。

敏捷教练,从A到Z

敏捷带来了新的领导者角色,“敏捷教练”。它是不是跟“部门经理”或“技术领导”一样,只是换汤不换药呢?教练Pat Kua在这篇启蒙文章中对敏捷教练一职做了概述。

利用Ruby简化你的Java测试(进阶篇)

本文是Productive Java with Ruby系列文章的第二篇,通过上一篇的介绍,我想大家对如何利用Ruby进行单元测试有了一个基本的了解,从这里开始,我将和大家一起讨论一些利用Ruby进行单元测试时的高级话题。