#单元测试之道Java版 - 读书笔记 (一)
第6章 使用mock对象
单元测试的目的是:一次只验证一个方法。若存在场景:某个方法依赖于网络、数据库、server引擎等无法操控内容,该如何处理?
为了实现上述场景,引入替代品:mock对象。能够解决的问题包括:
- 真实对象具有不可确定的行为(如股票预测);
- 真实对象很难被创建;
- 真实对象的某些行为很难触发;
- 真实对象有用户界面;
- 测试需要询问真实对象是如何被调用的;
- 真实对象实际上并不存在。
mock的使用包括3个步骤:
- 使用一个接口描述这个对象;
- 为产品代码实现这个接口;
- 以测试为目的,在mock对象中实现这个接口。
除了使得开发mock对象更加容易的基本框架代码,mock对象包还自带了大量使用的mock对象,例如:mock输出对象(PrintStream、PrintWriter)、mock的java.sql对象,以及servlet环境中测试的类,包括HTTPServerRequest和HttpServerResponse。
在章节中,简易介绍了mock的应用和示例,但是框架性的介绍不够深入。因此为了介绍其完整性,参考网络章节,进行介绍。
1、创建模拟对象
Mockito提供了几种创建模拟对象的方法:
-
使用静态
mock()
方法。 -
使用
@Mock
注释。