1.单元测试
1.1 单元测试的特点
●配合断言使用(杜绝System.out)
●可重复执行
。不依赖环境
●不会对数据产生影响
●spring的上下文环境不是必须的
●一般都需要配合mock类框架来实现
1.2 mock类框架使用场景
要进行测试的方法存在外部依赖(如db,redis,第三方接口调用等),为了能够专注于对该方法单元)的逻辑进行测试,就希望能虚拟出外部依赖,避免外部依赖成为测试的阻塞项,一般都是测试service层即可。
1.3常用mock类框架
mock类框架:用于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.html
限制:老版本对于final class、final method、static method、private method均不能被mockito mock,目前已支持fmar ciass、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.4jMockit
二、mockito的单独使用
2.1 mock对象与spy对象
2.2初始化mock/spy对象的方式
2.3参数匹配
拦截类型的任意对象 : modifyById(ArgumentMatchers.any(类.class))
测试校验