一、简介
1.1 单元测试的特点
1.2 mock类框架使用场景
要进行测试的方法存在外部依赖(如db,redis,第三方接口调用等),为了能够专注于对该方法(单元)的逻辑进行测试,就希望能虚拟出外部依赖,避免外部依赖成为测试的阻塞项。一般单元测试都是针对service层。
1.3 常用mock类框架
1.3.1 mockito
名称:ito:input to output
官网:https://site.mockito.org
官网文档:https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.htm
限制:老版本对于final class、final method、static method、private method 均不能被 mockito mock。目前已支持final class、final method、static method 的 mock,具体可以参考官网
原理:bytebuddy 教程:https://www.bilibili.com/video/BV1G24y1a7bd
1.3.2 easymock
1.3.3 powermock
官网:https://github.com/powermock/powermock
与 mockito 的版本支持关系:https://gitee.com/mirrors/powermock/wikis/Mockito#supported-versions
对 mockito 或 easymock 的增强
1.3.4 JMockit
二、mockito的单独使用
2.1 mock对象与spy对象
方法插桩 | 方法不插桩 | 作用对象 | 最佳实践 | |
---|---|---|---|---|
mock对象 | 执行插桩逻辑 | 返回mock对象的默认值 | 类、接口 | 被测试类或其依赖 |
spy对象 | 执行插桩逻辑 | 调用真实方法 | 类、接口 | 被测试类 |
2.2 初始化mock/spy对象的方式
方法一 | 方法二 | 方法三 | |
---|---|---|---|
junit4 | @RunWith(MockitoJUnitRunner.class) +@Mock等注解 | Mockito.mock(X.class)等静态方法 | MockitoAnnotations.openMocks(this)+@Mock等注解 |
junit5 | @ExtendWith(MockitoExtension.class) + @Mock等注解 | Mockito.mock(X.class)等静态方法 | MockitoAnnotations.openMocks(this)+@Mock等注解 |
2.3 参数匹配
2.4 方法插桩
指定调用某个方法时的行为(stubbing),达到相互隔离的目的
2.5 @InjectMocks注解的使用
断言工具
hamcrest:junit4中引入的第三方断言库,junit5中被移出,从1.3版本后,坐标由org.hamcrest:hamcrest-core变为org.hamcrest:hamcrest,用的少
assertj:常用的断言库
junit4原生断言
junit5原生断言
三、实战讲解
四、mockito在springboot环境使用(不推荐)
@SpyBean
原文地址:https://blog.csdn.net/liummmin/article/details/134566738
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_18509.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!