论坛首页 综合技术论坛

单元测试的虚与实

浏览 2548 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-11  

<o:p></o:p>仍然是“单元测试还是集成测试”,“什么时候用mock object”,这个老话题。对这个东西的理解见仁见智,不必求同。
首先,单元测试是设计技术,不是测试结束,是写在接口定义好,代码实现前的,在这个前提下讨论。

在设计的过程中,有些东西是实的,有些东西是虚的,参见下图

UI---JSP也好,swing也罢
DB---mysql,oracle,包括dal,dao层
框架---spring,hivemind,或其他种种

以上这些只是些许例子。这些东西是实的。
在你的设计空间里,你所有的构思、你的想象、你的设想,那是虚的(无贬义)。

这样就简单了,实的实测,虚的虚测。
UI的测试就直接跑起来去操作,数据库、DAO测试,用DBUNIT或者操作完了去看数据库(不必强求自动化)。 spring用它自己的AbstractDependencyInjectionSpringContextTests去测测看组件装配的对不对。

虚的用mock object,可用的库也不少,easymock真的很easy,测试单个接口很方便。   mock是“伪”的意思,正好跟“虚”配一对。

在理清概念、设计出接口后,实际实现前,用一堆mock的实现去跑一跑看行不行的通,是不是有什么潜在的问题等,非常有帮助,这是模拟执行的概念了。

对实的东西进行实的测试,使整个应用建筑在坚固的地基上,对虚的东西进行虚的测试,放飞思想的翅膀,在落地前,你可以有充分的自由改变轨迹、追求完美。

  • 大小: 57.2 KB
   发表时间:2008-10-09  
lz,最近要做一个关于MockObject的东东~!

看了.LZ的文章, 一个很简单的东东, 感觉被说得云里雾里的~/

呵呵.

为什么要用MockObject,以下是我的一点看法:
1. 如果其它模块引起本测试模块的错误

2. 隔决其它模块的开发状态,不管其开发完成没有,只要提供接口就OK

3. 对于一些较慢的操作,很难实例化的对象
0 请登录后投票
   发表时间:2008-10-09  
事实上,我这文说的是有些时候应该直接做集成测试,不用MockObject
0 请登录后投票
   发表时间:2008-10-22  
诺铁 写道
事实上,我这文说的是有些时候应该直接做集成测试,不用MockObject

0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics