首页/开发/软件测试速查/测试替身(Test Doubles)
测试基础与分层67 条

测试替身(Test Doubles)

用替代对象替换真实依赖以便隔离测试:Dummy、Stub、Spy、Mock、Fake 五类各有用途;Martin Fowler 与 xUnit Patterns 均有系统论述。

软件测试速查开发更新于 2026-10-12

五类替身

类型作用
Dummy仅填充参数,不被使用
Stub返回预设值,不校验交互
Spy记录调用信息供断言
Mock预设期望并校验调用
Fake简化可用的真实实现(如内存库)
优先使用 Fake 与 Stub 保持用例稳定;只在验证交互协议时使用严格 Mock。

易错点

  • 对每层依赖都打 Mock,测试通过只证明 Mock 配置正确
  • Mock 预设了实现细节,重构时测试大面积失败

数据来源与参考

  • Martin Fowler《TestDouble》《Mocks Aren't Stubs》(martinfowler.com)
  • Gerard Meszaros《xUnit Test Patterns》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌