术语“隔离框架”和“模拟框架”之间的区别是什么?
答案 0 :(得分:17)
我觉得接受的答案是错误的,模拟框架也是隔离框架。
Roy Oshroves的第5.1节书"The Art of Unit Testing"说
隔离框架是一组可编程的API 创建模拟和存根对象更容易。隔离框架保存 开发人员需要编写重复的代码来测试或 模拟对象交互。
这个定义可能听起来有点乏味,但它必须是通用的 为了包括各种隔离框架。隔离 大多数具有单元测试框架的语言都存在框架 与他们相关联。例如,C ++有mockpp和其他 框架,Java有jMock和EasyMock等。 .NET有 NMock,Moq,Typemock Isolator和Rhino Mocks。
在blog post by him他提到
隔离框架(模拟框架......但这是一个可怕的名字 它。 “模拟”这个词已经超载了)
所以他们通常指的是同一件事。隔离框架可用于启动模拟,但它也适用于其他测试双精度。隔离框架将是模拟框架是其中一部分的超集。
的总称这四种类型来自Lasse Koskela,书籍Effective Unit Testing。 Martin Fowler和Gerard Meszaros list five types:
但区别是相同的。
答案 1 :(得分:1)
这两个术语经常互换使用,但有一个重要的区别。在我看来, stubs 和 mocks 之间存在类似的差异。 Stub 即隔离框架仅提供预定义的输出,从而将“测试”与具有复杂内部状态,慢响应时间等的外部系统隔离开来。 Mock 即模拟框架不仅提供了预定义的输出(如果需要),而且还预先编程了预期,这些期望构成了预期接收的呼叫规范。因此,mock会跟踪其使用情况,如果使用不当,则无法“测试”。但是stub只提供预定义的输出。
找到更多内容