加载中...

测试替身(Test Double)是自动化测试中用来代替真实依赖组件的对象的统称,得名于电影替身演员(stunt double)。术语由 Gerard Meszaros 在《xUnit Test Patterns》中系统化,并经 Martin Fowler 的文章广为传播。使用替身可以隔离被测单元、避免访问数据库和网络等慢速或不稳定资源。
Dummy:仅用于填充参数,从不真正使用;Stub(桩):对调用返回预设的固定数据;Spy(间谍):在 Stub 基础上记录被调用的情况,供事后断言;Mock(模拟对象):预先设定期望的调用方式,验证交互是否按预期发生,不符则测试失败;Fake(伪对象):有真实可用的简化实现,如内存数据库。
关键区别在验证方式:Stub 配合状态验证(检查结果),Mock 用于行为验证(检查交互过程)。过度使用 Mock 会让测试与实现细节强耦合,重构即碎裂。
常见框架有 Java 的 Mockito、JavaScript 的 Jest/Sinon、Python 的 unittest.mock 等。

登录 后参与讨论
暂无讨论,来发表第一条评论吧