单元测试的隔离框架

在单元测试的编写中,不可避免的会碰到对象的依赖。

这时为了完成测试功能

首先,需要先把下层的依赖类实现;其次,只能等待结果返回即使会很耗时;最后,此测试用例已不仅仅反映是该函数功能的正误(还包含了依赖对象的逻辑)。

而这些和待测逻辑无关,却需要花大量时间在上面

 

通过使用隔离框架(如Rhino Mocks)

引入 mock object(模拟对象)/stub object(桩对象)

 

其中的外部依赖

如文件系统,线程,内存和时间,不受人为控制的依赖对象

使用桩对象作为外部依赖的替代品,可人为控制

 

其中依赖对象的交互

典型的如Web服务,邮件服务等需要验证其交互的对象

使用模拟对象作为伪对象,可认为控制的依赖验证依赖对象的状态或交互

 

两者的区别是:桩对象不会使测试失败,而模拟对象会。见下面图例:

桩对象并不被验证

image

 

模拟对象则被验证

image

posted @ 2013-02-28 09:59  LionX  阅读(197)  评论(0)    收藏  举报