单元测试之 easymock 使用实例

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

public void testArrayProcessing() throws Exception {
     Integer[] numbers = new Integer[2] {
         new Integer(6),
         new Integer(7)
     };
     // 创建伪造对象
     MockControl control = EasyMock.controlFor (Processor.class);
     Processor mockProcessor = (Processor)control.getMock();
     // 训练对象
     mockProcessor.process (numbers[0]);
     control.setReturnValue (new Integer(1));
     mockProcessor.process (numbers[1]);
     control.setReturnValue (new Integer(1));
     // 开始
     control.activate ();
     // 运行测试
     Mapper.map(mockProcess, numbers);
     // 验证测试
     control.verify();
 }

调用control 的verify 方法很重要,否则训练的一半就不能被测试。例如如果我们已经指定那个方法必须返回整数'1',那么调用verify方法确保返回的确实是那个值。 
训练过程中的方法调用的顺序没有影响,但是我们可以指定一个方法只能被调用指定的次数: 
//假设Processor接口有一个setName方法,并且
// 我们的类 Mapper,对每个项目都调用那个方法一次
mockProcessor.setName(Test);
control.setVoidCallable(3); 
当我们调用verify方法,它会检查setName 被调用了多少次,如果那个方法被调用得太频繁就会报告一个错误。 
EasyMock的主要局限性是只能工作于接口上,但是使用接口是一个好的设计习惯,这没有什么可抱怨的。 
EasyMock可以节省很多费力的工作并使得可以更快的编写单元测试。可以从网上下载EasyMock,还有一个关于对象仿制的论文和其他的对象仿制API的链接。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值