何谓单元测试?
- 单元测试通常不依赖外部依赖,会用到:
- Fake(伪对象):
- 一般通过 Map 等存放实际需要通过数据库请求获取的数据,跳过数据库依赖,在内存模拟。
- 可以具备修改等能力。
- 适用于可重用的具体实现,可以看成和真实一致的,只是数据模拟。
- Stub(存根):需要从依赖获取数据时,直接指定预定义的数据,比 Fake 还要直接。
- 通常只是查询。
- 可复用的硬编码响应,只有特定的值。
- Mock(模拟对象):将
- 单个测试使用,不能复用。
- Fake(伪对象):
- 单元测试:
- 程序最小的可测试部件
- 为重构提供信心,降低重构的成本:每次修改都能通过单元测试保证和原来一致。
- 提高代码质量:降低代码耦合,尽量单一职责
- 减少 bug:每个实现都是符合预期的
- 快速定位 bug:如果程序有 bug,运行全部单元测试,找到不通过的,就是 bug 所在。
- CI可以依赖单元测试,自动发现错误
- TDD(Test-Driven Development,测试驱动开发):一种设计方法论:
- 先编写测试用例,之后针对用例实现代码,使其能够通过。
- 可以先整理思路再开始实现,减少出 bug 的概率。
- 但是设计测试案例会很难。
- 单测框架:
- Java
- JUnit:
- Mockito:
- Java
