2015-04-22 156 views
2

我明白,模拟框架可以覆盖对象的行为。这使得测试更容易,更快捷。模拟生产环境中的对象行为可能会很好。但是问题出现在嘲弄开发者?最后,功能测试(这是真实世界的测试)告诉我们什么通过或失败。那么为什么要延长这个不可避免的?为什么要嘲笑一个对象,只是为了发现它甚至没有在生产中工作。为什么要等功能测试仪找出那些代码无效。如果我们没有嘲笑,而是使用真正的测试,那么我们可以马上发现错误,而不是嘲笑自己。这是一个提出给我的观点,它可能是philosphical,但你有什么想法嘲笑框架与现实世界的单元测试嘲笑框架与功能测试,为什么要嘲笑?

回答

3

好问题。在写了自动化的开发人员测试(甚至为我的需要创建一个模拟库)十年之后,我只能得出结论:使用嘲讽的单元测试是最好的方法,而不是而不是

相反,编写验收级别的集成测试对我来说效果更好。当我没有简单的方法时,我只使用嘲弄。尽管如此,我怀疑大多数开发者仍然需要好几年的时间才能分享这种观点。即使在今天,由于缺乏对此类测试的良好工具支持,创建(和运行)“现实世界”集成测试通常比仅仅嘲笑依赖关系更困难;通常情况下,“欺骗”并用嘲讽创建一堆单元测试更容易,而不是不费力地创建真实的测试,以更真实的方式真正实现代码。