Test Double 简介
对于一个应用程序或者一个系统而言,很难给你一个纯粹的类进行单元测试。对象之间的依赖往往交织到一起,需要拆成各个单元才能逐个击破,也是单元测试的目的。
需要将这些交织到一起的对象拆开,需要一些工具,例如模拟一些数据、替换一些具有某些特定行为的类等。 网站 xunitpatterns.com 把这些工具称为 Test Double,翻译过来就是”测试替身“。
Martin Fowler 为了让这些概念更容易理解,在他的网站上重新更加具体的定义了它们:
- Dummy 被用来仅仅作为填充参数列表的对象,实际上不会用到它们,对测试结果也没有任何影响。
- Fake 一些假的对象或者组件,测试过程中会被用到。例如内存数据库 h2,假的用于用户鉴权的 Bean,一般只会在测试环境下起作用,不会应用于生产。
- Stubs 为被测试对象提供数据,没有任何行为,往往是测试对象依赖关系的上游。
- Spies 被依赖对象的代理,行为往往由被代理的真实对象提供,代理的目的是为了断言程序运行的正确性。
- Mocks 模拟一个具有特性行为的对象,在测试开始