一、什么是Mockito
Mockito是一款用于java开发的mock测试框架,用于快速创建和配置mock对象。通过创建外部依赖的 Mock 对象, 然后将此 Mock 对象注入到测试类中,简化有外部依赖的类的测试。
假设我们需要对一个发奖系统服务做单元测试,服务的依赖关系如下:
为了完成RewardService的测试,我们需要去构建真实的DBService, CouponService, MemberService, 整个过程很长,涉及多个服务,数据构造工作比较繁琐困难。
这个时候,更简单快捷的方式就是通过mock的方式将依赖的服务使用虚拟的对象(即Mock的对象)来替代,直接mock出我们想要的数据来进行测试,方便快捷, 不需要关注那些的复杂的依赖了:
二、在springboot中使用Mockito
2.1 引入maven依赖
在项目pom.xml中引入依赖spring-boot-starter-test,内部就依赖了Mockito。
2.2 关键代码解析
1、添加注解,mock服务
首先,必须加这一行:@TestExecutionListeners(listeners = MockitoTestExecutionListener.class) ,用于启用Spring和Mockito,之前研究了半天用不起,报空指针,就是没有加这一行。
然后使用注解:@MockBean,把这个服务给mock掉。
2、mock接口返回内容
String msg1=xxxxxx, 这是定义你的接口返回内容。由于这个接口返回的内容是一个对象类型,所以还需要下面这句代码把String内容转换成指定的对象类型:
3、设置mock规则
表示当调用rewardService.reward(ParamContext)接口时,将接口的返回内容mock为之前定义的mockResult1的内容。
4、 调用接口
整体代码如下: