我们目前正在使用单元测试来测试我们的项目.我们涵盖了大部分功能,但我认为我们的测试太脆弱了.
我想知道是否有任何特定的事情可以使单元测试更加灵活,因此它们不会因为错误的原因而中断.
有几个答案提到要小心嘲笑太多......那么嘲笑的正当理由是什么?我认为这可能是我们的主要问题之一,但是当你的应用程序主要是一个动态的,数据库驱动的网站时,你如何摆脱嘲弄?
这是一个有点简单的答案,但显示了正确的心态:
如果行为以您关心的方式发生变化,测试应该会中断.
如果行为以您不关心的方式发生变化,测试应该继续有效.
因此,尽可能 - 不要大大超出你的方式 - 确保你正在测试方法的"最终结果"而不关心它是如何到达那里的.需要注意的一件事是嘲弄 - 它非常有用,但很容易让你的测试变得脆弱.
+1给Jon.说得好.
我发现在更加BDD风格的结构中构建我的测试有很多价值.那就是......拒绝每类固定装置的思维模式,而不是每个上下文固定装置.
我还发现RhinoMocks 3.5的AAA语法要好得多.
这些包括组织和清洁/可读测试.
为了让我的测试不那么脆弱,我开始重新开始嘲笑.模拟框架对于存根依赖关系至关重要,但模拟的越多,测试对实现的了解就越多.如果实现发生变化(但行为没有),那么你的测试不应该破坏.