中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 软件工程
使用EasyMock做单元测试
作者:未知 时间:2005-07-24 21:26 出处:JR 责编:chinaitpower
              摘要:使用EasyMock做单元测试
本文是为ZDNet翻译的系列文章之一,原文已经发表在ZDNet网站

单元测试的普及已经增长,部分原因是极限编程(eXtreme Programming)的增长,然而编写强大的单元测试是令人厌烦的事情。对象仿制通过伪造需要测试的目标的周围的对象来帮助减少你的工作,然后使用它检查和需要测试的目标相关的调用。 
EasyMock是 创建那些伪造对象的快速的方法,同时它会保持单元测试的能力。EasyMock 的通常用法是: 
1.    为一个接口创建一个伪造对象 
2.    训练那个接口告诉它期望的调用以及需要得到的反应 
3.    测试目标并验证伪造的对象 
这里有测试一个方法的范例,Mapper.map(Processor, Integer[]),map方法对数组中的每个整数调用Processor.process 方法:
  1. public void testArrayProcessing() throws Exception {
  2.     Integer[] numbers = new Integer[2] {
  3.         new Integer(6),
  4.         new Integer(7)
  5.     };
  6.     // 创建伪造对象
  7.     MockControl control = EasyMock.controlFor (Processor.class);
  8.     Processor mockProcessor = (Processor)control.getMock();
  9.     // 训练对象
  10.     mockProcessor.process (numbers[0]);
  11.     control.setReturnValue (new Integer(1));
  12.     mockProcessor.process (numbers[1]);
  13.     control.setReturnValue (new Integer(1));
  14.     // 开始
  15.     control.activate ();
  16.     // 运行测试
  17.     Mapper.map(mockProcess, numbers);
  18.     // 验证测试
  19.     control.verify();

调用control 的verify 方法很重要,否则训练的一半就不能被测试。例如如果我们已经指定那个方法必须返回整数’1’,那么调用verify方法确保返回的确实是那个值。 
训练过程中的方法调用的顺序没有影响,但是我们可以指定一个方法只能被调用指定的次数: 
//假设Processor接口有一个setName方法,并且
// 我们的类 Mapper,对每个项目都调用那个方法一次
mockProcessor.setName("Test");
control.setVoidCallable(3); 
当我们调用verify方法,它会检查setName 被调用了多少次,如果那个方法被调用得太频繁就会报告一个错误。 
EasyMock的主要局限性是只能工作于接口上,但是使用接口是一个好的设计习惯,这没有什么可抱怨的。 
EasyMock可以节省很多费力的工作并使得可以更快的编写单元测试。可以从网上下载EasyMock,还有一个关于对象仿制的论文和其他的对象仿制API的链接。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有