你认为JUnit测试中的嘲笑对象是最好的做法吗?我看不到很大的优势.当然,如果你有一个数据库不应该在你的测试中被考虑是有意义的,但是为什么不注入该组件的其他实现(如果使用
spring).一个对象工厂的测试将使这很容易.我没有太多经验(我们正在使用Mockito),但是我已经看到,该应用程序代码被修改,以使一些属性变得可耻!测试用例不应该在我的反对中消除生产代码的这种变化.
那你觉得这个话题怎么样?在这种情况下,您是在嘲笑您的对象还是为什么不这样做?
解决方法
嘲笑的想法是,你完全隔离你正在测试的东西.然后,当测试失败时,您可以确定问题所在,而无需遍历整个类依赖关系树.如果您一起测试多个类的行为,那么这不是真正的单元测试.
用于测试的对象工厂可能假定使用stubbed方法制作对象,而mocking框架本质上是用于测试的通用对象工厂.但是,嘲讽提供了比存根更多的东西 – Martin Fowler在这里详细介绍的一个区别:http://martinfowler.com/articles/mocksArentStubs.html.
如果你觉得嘲讽很难,而且你也发现你在做很多事情,那么这是TDD的典型例子,告诉你你的设计可以改进.