在编写单元测试用例时,需要模拟各种依赖对象——类成员、方法参数和方法返回 值。
直接构建对象 如果需要构建一个对象,最简单直接的方法就是——定义对象并赋值。
反序列化对象 如果对象字段或层级非常庞大,采用直接构建对象方法,可能会编写大量构建程序 代码。这种情况,可以考虑反序列化对象,将会大大减少程序代码。由于 JSON 字 符串可读性高,这里就以 JSON 为例,介绍反序列化对象。 1) 反序列化模型对象 2) 反序列化集合对象 3) 反序列化映射对象
利用 Mockito.mock 方法 Mockito 提供一个 mock 功能,用于拦截那些尚未实现或不期望被真实调用的方法, 默认所有方法都已被模拟——方法为空并返回默认值(null 或 0),除非主动执行 doCallRealMethod 或 thenCallRealMethod 操作,才能够调用真实的方法。 利用 Mockito.mock 方法模拟依赖对象,主要用于以下几种情形: • 只使用类实例,不使用类属性; • 类属性太多,但使用其中少量属性(可以 mock 属性返回值); • 类是接口或虚基类,并不关心其具体实现类。
利用@Mock 注解 @Mock 注解跟 Mockito.mock 方法一样,可以用来模拟依赖对象,适用于普通类、 接口和虚基类。@Mock 注解需要配合@RunWith 注解使用。
利用 Mockito.spy 方法 Mockito.spy 方法跟 Mockito.mock 方法功能相似,只是 Mockito.spy 方法默认所有 方法都是真实方法,除非主动去模拟对应方法。
利用@Spy 注解 @Spy 注解跟 Mockito.spy 方法一样,可以用来模拟依赖对象,适用于普通类、接口 和虚基类。@Spy 注解需要配合@RunWith 注解使用。 注意: @Spy 注解对象需要初始化。如果是虚基类或接口,可以用 Mockito.mock 方法实例 化。
以上内容摘自《Java工程师必读手册》电子书,点击https://developer.aliyun.com/ebook/download/7780 可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。