1.认识Mockito
- Mockito是java单元测试中使用率最高的Mock框架之一。
- 特点:简明的语法和完整的文档,Mockito支持永Maven和Gradle来进行依赖引入和管理。
2.Mockito Maven引入:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.8.0</version>
<scope>test</scope>
</dependency
3.认识Mockito
Mockito可以验证某些行为:一旦mock对象被创建了,mock对象会记住所有的交互。
![在这里插入图片描述](https://img-blog.csdnimg.cn/8e4a6624d54149a0b2efdfe0ed7197df.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qKn5qGQ5Y2X5ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
4.Mockito可以做一些测试桩(Stub)
默认情况下,所以的函数都有返回值。mock函数默认返回值是Null,一个空的集合或者一个被对象类型包装的内置类型,例如0,false对应的对象类型为Integer,boolean,测试桩函数可以被覆写,例如常见的测试桩可以用于初始化夹具,但是测试函数能够覆写它,一旦测试桩被调用,该函数将会一致返回。
![在这里插入图片描述](https://img-blog.csdnimg.cn/484f7eb47d574e1a98a884670836f180.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qKn5qGQ5Y2X5ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
5.Mockito以自然的JAVA风格来验证参数
为了合理的使用复杂的参数匹配,使用equals()与anyX()的匹配器会使得测试代码更简洁,简单。
![在这里插入图片描述](https://img-blog.csdnimg.cn/cd801fb48f364a139e7d0f7206631b28.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qKn5qGQ5Y2X5ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)
6.Mockito可以验证执行的顺序
验证执行顺序是非常灵活的,不需要一个一个的验证所有交互,只需要验证感兴趣的对象即可。另外,可以仅通过哪些需要验证顺序的mock对象来创建InOrder对象。
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ed3b81ec9fd4e4b8914ead8f2dad14e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qKn5qGQ5Y2X5ZGA,size_18,color_FFFFFF,t_70,g_se,x_16)
7.Mockito可以为连续的调用做测试桩
- 有时我们需要为同一个函数调用的不同的返回值或异常做测试桩
- 事例
8.Mocktio可以监控真实对象
可以为真实对象创建一个监控(spy)对象。当你使用这个spy对象也会调用,除非它的函数被stub了,尽量少使用spy对象,使用时也需要小心形式,例如spy对象可以用来处理遗留代码,监控一个真实的对象跟mock对象概念结合起来。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ba270d06028a4f84b2309e84e7524b45.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qKn5qGQ5Y2X5ZGA,size_20,color_FFFFFF,t_70,g_se,x_16)