测试之stub和mock

Mock

关注行为验证。细粒度的测试,即代码的逻辑,多数情况下用于单元测试。

Stub

关注状态验证。粗粒度的测试,在某个依赖系统不存在或者还没实现或者难以测试的情况下使用,例如访问文件系统,数据库连接,远程协议等。

Stub和Mock的相同处

stub和mock都是为了配合测试,对被测程序所依赖的单元的模拟。
简单说,为了测函数A,但A有引用到了函数B,通过模拟B的一些状态或行为测试A。
Stub和Mock都是模拟外部依赖,以便我们能控制。

Stub和Mock的区别

stub基于状态,mock基于行为
stub难于维护
mock有对本身的调用验证
stub是基于状态,mock是基于行为。
Stub是完全模拟一个外部依赖, 而Mock用来判断测试通过还是失败

参考

1、[Junit]stub和mock的区别
2、单元测试之Stub和Mock
3、Mock与Stub的区别
4、Mocks Aren’t Stubs

你可能感兴趣的:(测试之stub和mock)