作者在 2010-09-22 01:30:27 发布以下内容
stub 与 mock 的区别
关键字: stub, mock, test, tdd
有些东西就是这样,有些东西你心理面很明白,可是当你要给别人讲的时候却发现有一点点困难。
关于Stub & Mock的确别,我的理解是:
1.先说不同点:
Stub方法里面需要实现逻辑,因为对Stub的调用者需要依赖,stub模块或函数的返回值,正因为此,搭建stub跟mock比起来,是比较耗费精力的。也正因为此,stub一般用于粗粒度测试。
而mock的关键则是他要足够啥,只要能够让他的依赖者与之进行足够的交互既可以,正因为他傻,所以他的编写相对较容易,也正因为他傻,创建mock的工作可以由Easymock,mockmaker来自动完成,也正因为此,他可以用作细粒度的测试。
2.再说相同或想联系的地方。
都能够对系统进行隔离,
测试的很多时候我们会把一个mock退化成一个简单的stub,大多数的mock生成工具也都支持这一点。从这一点我们也可以看出,虽然作为很不同的两个概念,但他们之间也不是永远有着严格的界限。
其他的呢?关于设计与使用上的更多考量呢? 呵呵 这里推荐Martin Fowler 的一篇文章,文章很好,是naias宝宝 发给我的,感谢naias宝宝。:)
Mocks Aren't Stubs Mocks Aren't Stubs(一个翻译的版本)