单元测试基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-unit-testing/
什么是单元测试
单元测试, 用于验证你的应用程序是否可以按照预期的方式正常运行.
主要通过Mock或者Stub机制来隔绝与其他组件/服务之间的依赖, 控制测试的边界, 从而针对一个个单独的类或方法进行代码检查与测试.
为什么需要单元测试
因为每个单元(类或方法)都是整个系统的基石.
当实施单元测试时, 虽然短期来会对生产效率造成影响, 但是由于实施单元测试后, 项目的质量会得到提升, 从而避免了后期的维护和修改缺陷的花费, 所以从长远的角度来说, 实施单元测试有助于提高项目的生产效率.
并且由于实施单元测试, 问题将会被提前找出, 改变了以往没有单元测试时, 所有问题都集中到项目最后爆发的弊端.
从以上几点我们可以得出: 单元测试=提高质量+提高生产效率+降低开发和测试成本+改善工作流程
单元测试带来的好处
1. 带来更高的测试覆盖率: 单元测试可以很容易地模拟错误条件, 模拟各种有可能的情况, 从而提高代码的稳健性.
2. 提高团队效率: 单元测试可以让你在"功能测试"前提交 高质量/经过测试的代码, 避免在整体功能测试时遇到问题, 从而避免需要重复修改.
3. 辅助监管: 一组成功的通过的单元测试可以确认您的代码能正确运行, 或在你做得不对的时候及时提醒你.
4. 减少调试: 一组良好的单元测试将会减少调试应用程序来找错误的机会与所消耗的时间.
5. 给予重构的信心: 如果没有单元测试的话, 要证明重构是否成功将会是一件非常困难的事情, 单元测试提供了一个安全网, 为你的重构提供信心.
6. 找出需改进的部分: 通过管理单元测试, 可找出被测试的代码是否存在设计上的问题, 是否需要改进代码, 或是否需要重构.
7. 提供完美的代码示例: 单元测试可以完美的提供应用程序中的代码是如何使用的, 提供给其他开发人员一个使用示例.
8. 启用代码覆盖率与其他指标: 提供诸如代码覆盖率, 代码的性能, 应用程序的执行速度等数据.
单元测试隔绝依赖的两种机制
Stub: 用来模拟一个外部的依赖.
Mock: 用来屏蔽一个外部的依赖.
注意: 在单元测试中我们总习惯使用这两种机制来隔绝外部依赖, 但是请避免过度隔绝依赖, 这会导致你的测试完整性降低, 导致当外部的依赖发生改变时, 你的测试代码也没有检测出来.