在编写单元测试时,首先需要定义被测对象,或直接初始化、或通过 Spy 包装…… 其实,就是把被测试服务类进行实例化。
直接构建对象 直接构建一个对象,总是简单又直接。
利用 Mockito.spy 方法 Mockito 提供一个 spy 功能,用于拦截那些尚未实现或不期望被真实调用的方法, 默认所有方法都是真实方法,除非主动去模拟对应方法。所以,利用 spy 功能来定 义被测对象,适合于需要模拟被测类自身方法的情况,适用于普通类、接口和虚基 类。
利用@Spy 注解 @Spy 注解跟 Mockito.spy 方法一样,可以用来定义被测对象,适合于需要模拟被测 类自身方法的情况,适用于普通类、接口和虚基类。@Spy 注解需要配合@RunWith 注解使用。 @RunWith(PowerMockRunner.class) public class UserServiceTest { @Spy private UserService userService = new UserService(); ... } 注意: @Spy 注解对象需要初始化。如果是虚基类或接口,可以用 Mockito.mock 方法实例 化。
利用@InjectMocks 注解 @InjectMocks 注解用来创建一个实例,并将其它对象(@Mock、@Spy 或直接定义 的对象)注入到该实例中。所以,@InjectMocks 注解本身就可以用来定义被测对象。 @InjectMocks 注解需要配合@RunWith 注解使用。
以上内容摘自《Java工程师必读手册》电子书,点击https://developer.aliyun.com/ebook/download/7780 可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。