Kai*_*Kai 10 java junit mocking
你认为JUnit测试中的模拟对象是一种最佳实践吗?我没有看到巨大的优势.当然,如果你有一个不应该在你的测试中考虑的数据库它是有道理的,但为什么不只是注入该组件的其他实现(如果使用spring).测试的对象工厂将使这很容易.我没有太多经验(我们正在使用Mockito),但我已经看到,应用程序代码被修改,以便某些属性变得可模糊!在我的意见中,测试用例永远不应该在生产代码中改变这种变化.
那你觉得这个话题怎么样?在哪些情况下你嘲笑你的对象或为什么不嘲笑你的对象?
Mat*_*ard 18
嘲笑的想法是你完全孤立你正在测试的东西.然后,当测试失败时,您可以确定问题出在哪里,而无需查看整个类依赖关系树.如果您正在测试多个类的行为,那么这不是真正的单元测试.
测试的对象工厂可能会使用存根方法创建对象,而模拟框架本质上是用于测试的通用对象工厂.但是模拟提供了比存根更多的功能 - 这是Martin Fowler在这里详细介绍的一个区别:http://martinfowler.com/articles/mocksArentStubs.html.
如果你发现嘲弄很艰难,而且你也发现你做了很多,那么这就是TDD的一个典型例子,告诉你你的设计可以改进.
Mic*_*rdt 12
我已经看到,应用程序代码被修改,以便某些属性变得可模糊!在我的意见中,测试用例永远不应该在生产代码中改变这种变化.
TDD 的核心思想是通过强制您使所有代码都可测试,一般来说设计会变得更好.这并不一定意味着让一切都可以模仿,它也可能意味着减少耦合,这样就不需要更少的模拟.
即使您不同意这种理念(我不是100%自己购买),只要您认为自动化测试可以提供价值,那么更改生产代码以支持该值是有意义的(除非它严重损害了以某种其他方式设计).
归档时间: |
|
查看次数: |
29090 次 |
最近记录: |