模拟对象的局限性是什么?
模拟对象的使用可能会将单元测试与被测代码的实现耦合得很紧。例如,许多模拟对象框架允许开发人员指定模拟对象上方法被调用的次序和调用的次数,这样,测试通过后对代码进行重构,即使方法依然遵守以前实现的契约,也可能会造成测试失败。这说明单元测试应当测试方法的外部行为,而非其内部实现。在单元测试测试用例中过度使用模拟对象可能导致随着系统的发展,不断进行的重构会造成维护测试本身的工作量出现显著的增长。在发展过程中,这种测试的不正确地维护可能会漏报错误,而在使用真实对象进行的测试中会捕捉到。相反,与设置好整个真实对象相比,简单地模拟一个方法可能需要更少的配置,因此减少了需要的维护工作。
模拟对象必须要准确地建模它们要模拟的对象的行为,然而,如果要模拟的对象来自另一个开发人员或项目,或者如果还没有开发出来,准确的建模是很难做到。如果没有正确建模行为,那么可能会单元测试记录通过,而真正运行时,在同样条件下可能会造成测试失败。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请您通过400-62-96871或关注我们的公众号与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!







请先 登录后发表评论 ~