单元测试中的测试替身(基于Java的示例)
在单元测试中听到比较多的词就是Mock, 即模拟,也就是模拟一个虚拟的对象替代原来的对象,以便单元测试可以专注在所测试的单元。但其实单元测试中的模拟是有多种类型的,这些虚拟和模拟统称是测试替身。
测试替身(Test Doubles)用于隔离被测试代码的依赖,使测试专注于目标单元的逻辑。
测试替身的分类
测试替身可以分为以下5类:
类型 | 核心目的 | 验证重点 | 典型工具 |
---|---|---|---|
Dummy | 占位 | 无 | 手动创建空对象 |
Stub | 提供预设响应 | 返回值正确性 | 手动实现或框架(如Mockito) |
Spy | 记录调用信息 | 调用细节(如次数) | 手动实现或框架(如Sinon.js) |
Mock | 验证交互行为 | 方法调用是否符合预期 | Mock |