模拟对象(—)

本文主要探讨模拟对象在单元测试中的作用。当程序中有随机数、需测试数据库或GUI时,采用模拟对象可保证测试环境独立且快速。介绍了MockObject、MockMaker框架,还提到为解决代码管理问题的easymock,最后表示将用easymock演示GUI测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      最近忙得一直没有打理我的Blog。趁这两天有点时间,就写点单元测试的东西吧!一般的东西网上都很多了,我就来谈谈模拟对象在单元测试中的作用吧!
     现在TDD已经开始被大多数人接受,即使你没有完全采用这种开发方法,但至少你会采用单元测试的吧。
      我们知道单元测试的基本要求就是保证每个测试的环境是独立的,同时要求测试的速度尽量的快速。一般这都是很容易满足的,但是在下面的一些情况下,就有些矛盾出现了:当我们的程序中有随机数时,当我们要对数据库测试时,当我们需要测试GUI时……那么这时我们应该怎么办呢?采用模拟对象(Mock)。它可以帮助我们产生可控的和轻量级的对象。
      当然你可以自己实现模拟对象,但是当你写过几个这样的程序后,你就会觉得索然无味,为什么呢?因为它们的基本结构都是一样的。当初发明模拟对象的那帮人也发现了这点,所以他们最后就写了一个框架(MockObject),继承它,你就可以只关注于实际的业务逻辑而不用在那些的呆板的框架上费事了;但这样实现的模拟对象仍然需要很大的手工量,后来那帮人就索性好人做到底,又发布了一个MockMaker,借助它,你只需要提供一接口或者类,它就可以自动帮你生成你所需要的模拟对象,而且它的操作还有Swing界面,很是省事^_^!
     也许你觉得这样就很好了,但这样却出现了一个问题:我们在代码中需要额外的多管理几个类!也许你觉得这没有什么,但是当你的程序很大时就很有可能在修改某些代码后出现同步问题。那怎么办呢?牺牲部分灵活性,采用动态生成的办法——easymock。
     easymock的想法很简单,我不用额外生成一个类,只要你给我一个接口,我在测试时借助这个接口在内存中动态生成一个模拟对象,这样既保证了你的需要,又不会增加你的额外管理的负担!当然我在前面已经说了,这样做是有代价的(除了性能有些影响之外):easymock产生的模拟对象是被动的,它只能接收数据然后进行验证!当然,在大多数情况下这不是问题!
   好了,关于模拟对象的基本东西就介绍到这,下一篇中我将借助easymock来演示怎么对GUI进行测试 !
(上面提到的这三个框架你可以去SourceForge上下载)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值