Unit testing 隔离框架和模拟框架的区别

Unit testing 隔离框架和模拟框架的区别,unit-testing,frameworks,mocking,Unit Testing,Frameworks,Mocking,“隔离框架”和“模拟框架”之间有什么区别?这两个术语经常互换使用,但有一个重要的区别。在我看来,存根和mock之间也有类似的区别。存根(即隔离框架)仅提供预定义的输出,从而将“测试”与内部状态复杂、响应时间慢等的外部系统隔离。模拟(即模拟框架)不仅在需要时提供预定义的输出,但也有预先设定的期望,形成了一个规格的电话,他们预计会收到。因此,mock跟踪其使用情况,如果使用不当,则无法通过“测试”。但是存根只提供预定义的输出 你可以在上找到更多信息,我觉得公认的答案是错误的,模拟框架也是隔离框架 R

“隔离框架”和“模拟框架”之间有什么区别?

这两个术语经常互换使用,但有一个重要的区别。在我看来,存根和mock之间也有类似的区别。存根(即隔离框架)仅提供预定义的输出,从而将“测试”与内部状态复杂、响应时间慢等的外部系统隔离。模拟(即模拟框架)不仅在需要时提供预定义的输出,但也有预先设定的期望,形成了一个规格的电话,他们预计会收到。因此,mock跟踪其使用情况,如果使用不当,则无法通过“测试”。但是存根只提供预定义的输出


你可以在

上找到更多信息,我觉得公认的答案是错误的,模拟框架也是隔离框架

Roy Oshroves书的第5.1节说

隔离框架是一组可编程的API,它们使 创建模拟和存根对象要容易得多。隔离框架保存 开发人员不需要编写重复的代码来进行测试或测试 模拟对象交互

这个定义听起来可能有点乏味,但它需要是通用的 以包括各种隔离框架。隔离 大多数有单元测试框架的语言都有框架 与他们有联系。例如,C++有McCKPP等 框架,Java有jMock和EasyMock等。网络有 NMock、Moq、Typemock隔离器和Rhino Mock

他在一封信中提到

隔离框架(mocking framework…),但这是一个可怕的名字 它。mock这个词已经重载了)

所以他们通常指的是同一件事。隔离框架可用于启动模拟,但也适用于其他双重测试。隔离框架将是一个超集,模拟框架是其中的一部分

A是一个总括性术语

  • 测试存根
  • 假货
  • 测试间谍和
  • 模拟对象
这四种类型来自Lasse Koskela的书。马丁·福勒和杰拉德·梅萨罗斯:

  • 虚拟对象
  • 假货
  • 存根
  • 间谍和
  • 嘲弄
但区别是一样的