Mockito使用总结

Mockito介绍

Mockito就是一个优秀的用于单元测试的mock框架。在软件开发中提及”mock”,通常理解为模拟对象。所以Mockito就是为了模拟对象,然后进行解耦合测试。
Mockito可以让你用优雅,简洁的接口写出漂亮的单元测试。Mockito可以让单元测试易于可读,产生简洁的校验错误。

类之间是存在相互依赖的

Mockito使用总结_第1张图片
类依赖示意图.PNG

如果我们想对类A进行单元测试,我们会发现它依赖B和C,而B又依赖D。此时如果对A进行测试就必须等B、C、D都开发完后才能测试,A测试正确与否也跟它依赖的类息息相关,但是使用Mockito后就可以剪除依赖,关注于被测试的类本身逻辑,完成测试。

为什么要用Mockito

  • 剪除外部依赖,提升代码质量
  • 团队并行开发,提高开发速度
  • 为无法访问的资源编写测试

集成Mockito的基本步骤

  • 标记被Mock的类或者对象,生成代理对象
  • 通过Mockito API定制代理对象的行为
  • 调用代理对象的方法,获得预先设计的结果

模拟对象的三种方式

>> 使用MockitoAnnotations模拟对象

Mockito使用总结_第2张图片
使用MockitoAnnotations模拟对象.png

>> 使用MockitoJUnitRunner模拟对象

Mockito使用总结_第3张图片
使用MockitoJUnitRunner模拟对象.png

>> 使用MockitoRule模拟对象

Mockito使用总结_第4张图片
使用MockitoRule模拟对象.png

@Spy和@Mock是有区别的

Mockito使用总结_第5张图片
@Spy和@Mock区别.png

验证行为

Mockito使用总结_第6张图片
验证行为.png
Mockito. 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");

参数匹配

Mockito使用总结_第7张图片
参数匹配.png
备注:如果你使用了参数匹配器,那么所有参数都应该使用参数匹配器

JUnit、Mockito、Spring结合使用

Mockito使用总结_第8张图片
JUnit、Mockito、Spring结合使用.png

你可能感兴趣的:(Mockito使用总结)