Dummary、Fake、Stub、Spy、Mock介绍

来源:互联网 发布:北京超图软件好进吗 编辑:程序博客网 时间:2024/06/15 17:15

Test Double(测试替身) 可以分为Dummary、Fake、Stub、Spy、Mock几种。下面是定义:

Dummy Object不包含实现的对象(Null也是),在测试中需要传入,但是它没有被真正地使用,通常它们只是被用来填充参数列表。Fake有具体实现的,但是实现中做了些捷径,使它们不能应用与生产环境(举个典型的例子:内存数据库)Stub返回固定值的实现
State verification 状态验证Spy类似于Stub,但会记录被调用那些成员,以确定SUT(System Under Test)与它的交互是否是正确的
Behavior verification 行为验证Mock由Mock库动态创建的,能提供类似Dummy、Stub、Spy的功能。
开发人员看不到 Mock object 的代码,但可以设置 Mock object 成员的行为及返回值。

Dummy通常用于填充参数,并且不会被真正调用到;Fake是提供了一套简易的实现,利用简易实现来测试功能;Stub通过打桩来固定一些返回值或执行异常操作等;

Spy创建的对象可以用来监控行为是否被执行、执行顺序等,在mockito中执行Spy方法,真实对象也会影响到,因为spy对象是对真实对象的一个拷贝;

Mock拥有其他替身的能力,是由动态库生成的,可以设置行为和返回值


其他参考:

http://docs.spring.io/spring/docs/current/spring-framework-reference/pdf/spring-framework-reference.pdf

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#spring-mvc-test-framework