使用EasyMock做单元测试

ZDNet软件频道 时间:2003-01-08 作者:BUILDER.COM |  我要评论()
本文关键词:javatips
单元测试的普及已经增长,部分原因是极限编程(eXtreme Programming)的增长,然而编写强大的单元测试是令人厌烦的事情。EasyMock是创建那些伪造对象的快速的方法,同时它会保持单元测试的能力。

单元测试的普及已经增长,部分原因是极限编程(eXtreme Programming)的增长,然而编写强大的单元测试是令人厌烦的事情。对象仿制通过伪造需要测试的目标的周围的对象来帮助减少你的工作,然后使用它检查和需要测试的目标相关的调用。

EasyMock是创建那些伪造对象的快速的方法,同时它会保持单元测试的能力。EasyMock 的通常用法是:

  1. 为一个接口创建一个伪造对象
  2. 训练那个接口告诉它期望的调用以及需要得到的反应
  3. 测试目标并验证伪造的对象

这里有测试一个方法的范例,Mapper.map(Processor, Integer[]),map方法对数组中的每个整数调用Processor.process方法:

调用control的verify方法很重要,否则训练的一半就不能被测试。例如如果我们已经指定那个方法必须返回整数’1’,那么调用verify方法确保返回的确实是那个值。

训练过程中的方法调用的顺序没有影响,但是我们可以指定一个方法只能被调用指定的次数:

//假设Processor接口有一个setName方法,并且
// 我们的类 Mapper,对每个项目都调用那个方法一次

mockProcessor.setName("Test");
control.setVoidCallable(3);

当我们调用verify方法,它会检查setName被调用了多少次,如果那个方法被调用得太频繁就会报告一个错误。

EasyMock的主要局限性是只能工作于接口上,但是使用接口是一个好的设计习惯,这没有什么可抱怨的。

EasyMock可以节省很多费力的工作并使得可以更快的编写单元测试。可以从网上下载EasyMock,还有一个关于对象仿制的论文和其他的对象仿制API的链接。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134