-
为测试,保护独立性——用stub来打破对象之间的依赖关系
2009-09-19
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://bearwhisper.blogbus.com/logs/46742194.html
现在来看The Art of Unit Testing With Examples in .NET的第三章“Using Stubs to Break Dependencies”
- 作者使用了三种定义来指向测试中的伪造关系:fakes, stubs 和 mocks。
- “除了间接层次过多这样的问题之外,没有哪种面向对象的问题是不能通过添加间接层次解决的。”然而,单元测试的诸多精妙之处就在于:如何找到正确的地方添加或使用间接层次,以测试目标代码。
- 加入间接层次的三个步骤:
- 找到待测试方法依赖的“接口”。这里的接口不单单是指面向对象中的接口,还包括与其他类协作需要调用的方法或类。
- 如果“接口”与待测方法有“直接关系”(比如直接调用等等),就可以通过向接口加入间接层次,使得待测方法可以被测试。
- 将交互接口的“潜在实现”用可以控制的东西替换。
- 对于Seam(接缝)的定义:
Seams are places in your code where you can plug in different functionality, such as stub classes. (可参考Michael Feathers的《修改代码的艺术》)
- 打破依赖的5种方法:
- 抽离出接口,以替换潜在实现。
- 向待测类中注入stub实现。
- 在构造器中接收接口作为函数。
- 将接口作为属性,进行设置或读取。
- 在调用方法前得到stub。
随机文章:
基本用法规则3:用逗号分隔插入语表达方式 2009-11-30我们马上会变得更快——项目经理应该小心的游戏之十五 2009-05-04到了之后,我们会知道身处何方——项目经理应该小心的游戏之九 2009-03-20语丝 2009-02-10老罗问连岳 2009-01-11
收藏到:Del.icio.us








评论