隔离框架与模拟框架的区别

mad*_*ree 9 frameworks unit-testing mocking

"隔离框架"和"模拟框架"这两个术语有什么区别?

eis*_*eis 17

我觉得接受的答案是错误的,模拟框架也是隔离框架.

5.1节罗伊Oshroves书"单元测试的艺术"

一个隔离框架是一组,使创建模拟和存根对象更容易编程的API.隔离框架使开发人员无需编写重复代码来测试或模拟对象交互.

这个定义可能听起来有点乏味,但它必须是通用的才能包含各种隔离框架.对于大多数具有与之关联的单元测试框架的语言,存在隔离框架.例如,C++有mockpp和其他框架,Java有jMock和EasyMock等..NET有NMock,Moq,Typemock Isolator和Rhino Mocks.

博客文章中,他提到了这一点

隔离框架(模拟框架......但这是一个可怕的名称.已经重载了mock这个词)

所以他们通常指的是同一件事.隔离框架可用于启动模拟,但它也适用于其他测试双精度.隔离框架将是模拟框架所属的超集.

测试双为一个总称

  • 测试存根
  • 假物
  • 测试间谍和
  • 模拟对象

这四种类型来自Lasse Koskela,书籍Effective Unit Testing.Martin Fowler和Gerard Meszaros 列出了五种类型:

  • 虚拟对象
  • 假物
  • 存根
  • 间谍和
  • 嘲笑

但区别是一样的.


Aki*_*kim 1

这两个术语经常互换使用,但有一个重要的区别。在我看来,存根模拟之间也有类似的区别。Stub ie Isolation Framework仅提供预定义的输出,从而将“测试”与内部状态复杂、响应时间慢等的外部系统隔离。Mock ie Mock Frameworks不仅在需要时提供预定义的输出,而且还具有预编程的期望形成他们预计收到的呼叫的规范。因此,模拟会跟踪其使用情况,如果使用不当,“测试”就会失败。但存根仅提供预定义的输出。

您可以在Martin Fowler 的 Mocks Aren't Stubs 文章中找到更多信息