Mockito使用总结
2017-07-01 本文已影响625人
大华夏
Mockito介绍
Mockito就是一个优秀的用于单元测试的mock框架。在软件开发中提及”mock”,通常理解为模拟对象。所以Mockito就是为了模拟对象,然后进行解耦合测试。
Mockito可以让你用优雅,简洁的接口写出漂亮的单元测试。Mockito可以让单元测试易于可读,产生简洁的校验错误。
类之间是存在相互依赖的
类依赖示意图.PNG如果我们想对类A进行单元测试,我们会发现它依赖B和C,而B又依赖D。此时如果对A进行测试就必须等B、C、D都开发完后才能测试,A测试正确与否也跟它依赖的类息息相关,但是使用Mockito后就可以剪除依赖,关注于被测试的类本身逻辑,完成测试。
为什么要用Mockito
- 剪除外部依赖,提升代码质量
- 团队并行开发,提高开发速度
- 为无法访问的资源编写测试
集成Mockito的基本步骤
- 标记被Mock的类或者对象,生成代理对象
- 通过Mockito API定制代理对象的行为
- 调用代理对象的方法,获得预先设计的结果
模拟对象的三种方式
>> 使用MockitoAnnotations模拟对象
使用MockitoAnnotations模拟对象.png>> 使用MockitoJUnitRunner模拟对象
使用MockitoJUnitRunner模拟对象.png>> 使用MockitoRule模拟对象
使用MockitoRule模拟对象.png@Spy和@Mock是有区别的
@Spy和@Mock区别.png验证行为
验证行为.pngMockito. verify(T mock, VerificationMode mode)
Mockito.times()
Mockito.never()
Mockito.atLeast()
Mockito.atMost()
Stubbing(下桩)
Mockito.when(mockList.get(0)).thenReturn("Hello,China").thenReturn("Hello,YaoWan");
Mockito.when(mockList.get(1)).thenReturn("Hello,World");