我在项目中使用了更多的单元测试,并阅读了我可以在线的所有信息,并且很多术语都感到困惑。因此,我可能会在对话和谷歌搜索中错误地使用这些术语。单元测试术语概述(存根vs模拟,集成与交互)?
有人可以概括所有的单元测试术语,如“假”类型以及测试类型(交互与整合)吗?
我在项目中使用了更多的单元测试,并阅读了我可以在线的所有信息,并且很多术语都感到困惑。因此,我可能会在对话和谷歌搜索中错误地使用这些术语。单元测试术语概述(存根vs模拟,集成与交互)?
有人可以概括所有的单元测试术语,如“假”类型以及测试类型(交互与整合)吗?
当涉及到嘲笑对假货与存根,实际上有几种不同的方式,人们解释他们。我通常借the meanings defined by Martin Fowler:
相互作用测试是指单元测试,其确保对象之间的交互是正确的(确保预期方法被调用)的通用术语。这与状态(或经典)测试相反,只要结果状态正确,它不关心方法中发生的情况。这些类型的测试在我上面链接的Fowler的文章中进行了比较。
Integration testing真的不是单元测试的一个方面,它是单元测试的一个级别。它需要不同的单位并验证他们正确地一起工作。
测试双打的定义不是福勒的 - 他们来自Gerard Meszaros的优秀书籍“xUnit测试模式”,福勒自由地承认这一点。 – 2009-12-02 08:02:38
福勒做当然是一个伟大的工作,在区分Mocks and Stubs,但对我来说,XUnit Test Patterns书是参考和我建议检查Mocks, Fakes, Stubs and Dummies进行全面比较。
是的,我知道,这是混乱,这就是为什么我建议检查Mocks and Stubs aren't Spies,然后let’s spy,最后Mockito - The New Mock Framework on the Block太。
关于不同类型的测试,一个简化的解释可能是(这不是穷举性列表):
甲这些类型是有用的而不是排他性的,他们实际上只是没有相同的意图。
我已阅读(并衷心推荐)由罗伊·奥谢罗夫编辑的The Art of Unit Testing。他使用了一套简化的术语。
套用他的书......
集成测试 - 到达当前进程或对象以外的其他事情
交往试验交互的测试 - 在路上测试该对象协同工作
状态测试 - 由一个操作所产生的结果的测试
假 - 替身对象被测
模拟提供了代码所需的依赖 - - 这是使用真实的东西
存根,而不是任何替身对象替身用来检查测试
注意的是,这里存根和嘲弄二者可以被嘲弄的框架内提供的结果 - 在distiction是尽可能多的关于如何使用它们所使用的技术。
来自MSN杂志的这个article解释了术语并通过示例和一些源代码进行了一些细节。
基本上这些是测试双:
相关:[伪装和嘲弄之间的区别](http://stackoverflow.com/questions/346372/whats-the-difference-between-faking-mocking-and-stubbing) – nawfal 2014-07-23 17:53:26