关于术语:测试软件:假与存根

Testing software: fake vs stub

有很多关于存根和模拟的文章,但我看不出假和存根之间的真正区别。 谁能对它有所启发?


我假设你指的是Meszaros引入的术语。 Martin Fowler也经常提到他们。我认为他在那篇文章中很好地解释了这种差异。

不过,我会用自己的话再试一次:)

虚假比存根更接近现实世界的实现。存根基本上包含对预期请求的硬编码响应;它们通常用于单元测试,但除了预编程之外,它们无法处理输入。

假货有一个更真实的实现,比如可以保留的某种状态。它们可用于系统测试以及单元测试目的,但由于某些限制或质量要求,它们不适用于生产用途。


假冒与它取代的东西具有相同的行为。

存根具有一组"固定"的"罐装"响应,这些响应特定于您的测试。

模拟对所做的调用有一系列期望。如果不满足这些期望,则测试失败。

所有这些都是相似的,因为它们取代了在测试用途下编码的生产合作者。


这可能有所帮助

  • http://xunitpatterns.com/Mocks,%20Fakes,%20Stubs%20and%20Dummies.html
  • http://hamletdarcy.blogspot.com/2007/10/mocks-and-stubs-arent-spies.html