首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

不测收获,关于mock和stub

2012-07-02 
意外收获,关于mock和stub。记录一些自己的想法,边写边想吧。这是之前写的一篇东西:从AWDWR中的depot思考软件

意外收获,关于mock和stub。
记录一些自己的想法,边写边想吧。

这是之前写的一篇东西:从AWDWR中的depot思考软件设计
也许表达得不是很清楚……但我自己确确实实能感觉到自顶向下逐步细化需求的开发方式是很有好处的。

后来回头搜索以前JavaEye上TDD相关的讨论,主要是关于mock的,找到这篇文章:讨论《不要把Mock当作你的设计利器》,以及这篇文章的主角:不要把Mock当作你的设计利器,感觉完全颠覆了我之前对mock的认识。好像大家都在说:只有对UI、第3方接口、I/O对象等这些创建的成本很高的对象有进行mock的必要。而我的认识一直是:当你正在测试的对象要调用另一个对象的时候,就要对另一个对象进行mock,从而隔离另一个对象具体的实现对当前对象的影响,这样使开发人员可以一次只关注一件事,完成一件事之后再去做另一件事。

想到这里,问题又来了:为什么不对String进行mock?String也是“其它对象”啊,难道只是因为它是已经实现了的类?这会脑子里有点乱……mock1234说“凡是考虑测试驱动必从突出集成测试这个概念入手”……Sun实现了String就不用mock?……不是说mock用于隔离其它对象的实现对当前对象的影响么……难道这是错的?

停停,以前写过两篇笔记,里面都用到了mock,回去看看也许能有收获,首先是这篇:写了个Servlet的测试用例,初学单元测试,大家帮我看看。

这里面的mock很自然,确实,response、request这样的对象不好创建,只能mock。那么这个servlet的下面呢?它调用的下一层是什么?没有。是的,没有。。。原来当时把下一层的调用直接给忽略掉了。那么,如果它有下一层的调用的话,该怎么办?mock吗?我又想起来以前写的另一篇曾经自以为正确的TDD过程小demo:http://www.iteye.com/topic/257923

在这里,看看这个所谓的“Service”的测试代码(帖子里写的那整个过程就不看了,完全就不是那么回事):

 由于草稿是在昨天晚上打的,今天修改了半天才发布,所以发布时间变成14:25了……   

热点排行