13-14. @InjectMocks、@Captor、ArgumentCaptor、captor.capture()、captor.getValue()
@InjectMocks修饰的对象,会创建一个真实对象,会调用真实方法(若方法中再调用对象中的其他方法时,也是调用真实方法)
package lesson13_14;import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.List;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;@RunWith(MockitoJUnitRunner.class)
public class ArgumentCaptorTest {@Mockprivate List<String> list;@Mockprivate UserDao userDao;@Captorprivate ArgumentCaptor<User> captorAnnotation;/*** @InjectMocks作用:* 1.构造注入:* 通过UserService的构造函数将Mock的userDao注入UserService,等价于UserService userService = new UserService(userDao);* 2.会调用修饰对象的真实方法* */@InjectMocksUserService userService;@Testpublic void test() {ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);when(list.add("test")).thenReturn(true);list.add("test");verify(list).add(captor.capture());assertThat(captor.getValue(), equalTo("test"));}@Testpublic void test2() {User user = new User(1);when(userDao.delUser(user)).thenReturn(true);assertThat(userService.delUser(user), equalTo(true));assertThat(user.getType(), equalTo("D"));}@Testpublic void test3() {ArgumentCaptor<User> captor = ArgumentCaptor.forClass(User.class);User user = new User(1);when(userDao.delUser(user)).thenReturn(true);boolean result = userService.delUser(user);assertThat(result, equalTo(true));verify(userDao).delUser(captor.capture());assertThat(captor.getValue().getType(), equalTo("D"));}@Testpublic void testAnnotation() {User user = new User(1);when(userDao.delUser(user)).thenReturn(true);boolean result = userService.delUser(user);assertThat(result, equalTo(true));verify(userDao).delUser(captorAnnotation.capture());assertThat(captorAnnotation.getValue().getType(), equalTo("D"));}
}
package lesson13_14;public class UserService {private final UserDao userDao;public UserService(UserDao userDao) {this.userDao = userDao;}public boolean delUser(User user){user.setType("D");return userDao.delUser(user);}
}
package lesson13_14;public class UserDao {public boolean delUser(User user) {throw new RuntimeException();}
}
package lesson13_14;public class User {private final Integer id;private String type;public User(Integer id) {this.id = id;}public Integer getId() {return id;}public String getType() {return type;}public void setType(String type) {this.type = type;}@Overridepublic String toString() {return "User{" +"id=" + id +", type='" + type + '\'' +'}';}
}
13-14. @InjectMocks、@Captor、ArgumentCaptor、captor.capture()、captor.getValue()相关推荐
- 首批 iPhone 13 用户直呼太“坑”:拍照有马赛克、不能用高刷、还与 Apple Watch “失联”?...
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) iPhone 13 到底香不香,早在 9 月 15 号的苹果秋季发布会上给了我们答案.对此,自然是仁者见仁智者见智:有人认为 iPhon ...
- 近期活动盘点:工业大数据讲座、大数据自杀风险感知讲座、数据法学研讨会、海外学者短期讲学(12.3-12.13)
想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 工业大数据分析:机会与挑战讲座 2017年12月6日 活动简介: 随着"中国制造2025"国家战略和"工业4 ...
- Ubuntu 14.04 LTS 下升级 gcc 到 gcc-4.9、gcc-5 版本
转载: http://www.cnblogs.com/BlackStorm/p/5183490.html Ubuntu 14.04 LTS 下升级 gcc 到 gcc-4.9.gcc-5 版本 如果没 ...
- 14.利用虚函数实现多态性来求正方体、球体和圆柱体的表面积和体积。
14.利用虚函数实现多态性来求正方体.球体和圆柱体的表面积和体积. 具体要求如下, 从正方体.球体和圆柱体的各种运算中抽象出一个公共基类container为抽象类, 在其中定义求表面积和体积的纯虚函数 ...
- (4.7-4.13)【大数据新闻速递】上海、广州、青海、贵阳大力发展大数据产业;2026年中国大数据市场规模预计达365亿美元
01[贵阳大数据交易所发布全国首个交易激励计划] 4月6日,贵阳大数据交易所发布了"交易激励计划",旨在提高数据场内交易的吸引力,解决交易入场难的问题.该计划是落实<关于构建 ...
- 首批 iPhone 13 用户直呼太“坑”:拍照有马赛克、与 Apple Watch “失联”、第三方 App 还不能用高刷?
iPhone 13 到底香不香,早在 9 月 15 号的苹果秋季发布会上给了我们答案.对此,自然是仁者见仁智者见智:有人认为 iPhone 13 "加量不加价"挺划算,有人则认为 ...
- iOS 14.5.1 系统后出现了发烫、运行卡顿、跑分降低的解决方法
不少 iPhone 11 和 iPhone 12 系列的用户反映,更新到苹果最新的 iOS 14.5.1 系统后出现了发烫.运行卡顿.跑分降低的问题. 我们可以通过以下方法来解决 打开设置 - App ...
- macOS Ventura 13.4.1 (22F82|22F2083) 正式版发布,ISO、IPSW、PKG 下载
macOS Ventura 13.4.1 (22F82|22F2083) 正式版发布,ISO.IPSW.PKG 下载 本站下载的 macOS Ventura 软件包,既可以拖拽到 Applicatio ...
- (13.1.1)PMBOK之一:运营,项目、项目集、项目组合、组织战略及其管理
一. 项目的定义与特性 临时性 独特性 渐进明细性 二. 运营 2.1 项目和运营的共性 2.2 项目和运营的差异 2.3 项目与运营具有相对性 2.3.1 项目与运营的承接关系 三.商业价值.组织战 ...
最新文章
- The world at your fingertips — 天涯明月刀幕后23(海战)
- python 映射和反映射_python映射类型的相关介绍
- 应用程序模块和实体缓存
- 搭建Zabbix Proxy HA
- 微软发布 VS Code Remote,开启远程开发新时代!
- vivox20 html阅读器,【vivoX20评测】屏幕:全面屏也得看显示素质_vivo X20_手机评测-中关村在线...
- 程序员的自我修养(序)-量子
- jquery_datatables
- Go语言 channel 管道 阻塞 死锁 经典问题
- 专家系统实例及其骨架系统
- 单片机原理及应用 C51编程 proteus仿真
- 用Python解读房贷利率,有没有套路?这是我见过最透彻的Python版解读!
- AspectJ+AJDT+用Ant管理AspectJ项目+AspectJ教程
- BOOT.BIN文件
- 51单片机最小系统原理图、PCB及组成原理详解
- VC浏览器相关的学习(七)(BHO捕获鼠标键盘事件)
- Python爬取热搜数据之炫酷可视化
- 6.13一天知识总结
- 用python爬取《龙岭迷窟》评论,看看比同系列鬼吹灯作品以及《盗墓笔记》好在哪里?
- 细粒度图像分析论文汇总
热门文章
- java.lang.IllegalStateException: No primary or default constructor found for interface java.util
- 程序员的一些忠告和反省
- flashlight问题调试
- Python基础练习——输出质数
- Android Studio 技巧之【Move Lines Up Down】
- 漂亮的大屏主视觉ui设计
- 【PA2014】【BZOJ3709】Bohater
- MM32F103空气质量检测仪
- 洞察与思考Fuzzing技术发展趋势
- CUDA编程基础:如何实现c++事实绘制曲线,采用的绘图工具箱是:gnuplot