1) Mock 可以用来解除外部服务依赖,从而保证了测试用例的独立性。 现在的互联网软件系统,通常采用了分布式部署的微服务,为了单元测试某一服务 而准备其它服务,存在极大的依耐性和不可行性。
2) Mock 可以减少全链路测试数据准备,从而提高了编写测试用例的速度。 传统的集成测试,需要准备全链路的测试数据,可能某些环节并不是你所熟悉的。 最后,耗费了大量的时间和经历,并不一定得到你想要的结果。现在的单元测试, 只需要模拟上游的输入数据,并验证给下游的输出数据,编写测试用例并进行测试 的速度可以提高很多倍。
3) Mock 可以模拟一些非正常的流程,从而保证了测试用例的代码覆盖率。 根据单元测试的 BCDE 原则,需要进行边界值测试(Border)和强制错误信息输入 (Error),这样有助于覆盖整个代码逻辑。在实际系统中,很难去构造这些边界值, 也能难去触发这些错误信息。而 Mock 从根本上解决了这个问题:想要什么样的边 界值,只需要进行 Mock;想要什么样的错误信息,也只需要进行 Mock。
4) Mock 可以不用加载项目环境配置,从而保证了测试用例的执行速度。 在进行集成测试时,我们需要加载项目的所有环境配置,启动项目依赖的所有服务 接口。往往执行一个测试用例,需要几分钟乃至几十分钟。采用 Mock 实现的测试 用例,不用加载项目环境配置,也不依赖其它服务接口,执行速度往往在几秒之内, 大大地提高了单元测试的执行速度。
以上内容摘自《Java工程师必读手册》电子书,点击https://developer.aliyun.com/ebook/download/7780 可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。