java 单元测试inject_Mockito中@Mock与@InjectMock
Mockito是java单元测试中,最常用的mck工具之一,提供了诸多打桩方法和注解。其中有两个比较常用的注解,@Mock和@InjectMock,名字和在代码中使用 的位置都很像,对于初学者,很容易误解。下面花一点时间,做个简单的介绍。
介绍之前,首先要明确一点:@Mock和@InjectMock这两个注解除了名字和使用方式比较像之外,是在功能上无任何可类比性的完全不同的东西。
@Mock:
在Mockito中用于创建mock对象,使用方法如下:
@Mock
private ClassName mockedObject;
上面代码创建了一个名为mockedObject,类型为ClassName的mock对象,该对象所有的方法被置空,根据测试代码逻辑的需要使用
@InjectMock:
这是一个注入mock对象的操作,参考如下代码:
@Mock
private ClassName mockedObject;
@InjectMock
private TestedClass TestedObj = new TestedClass();
这段代码中,@InjectMock下面声明了一个待测试的对象,若该对象有类型为ClassName的成员变量,@Mock定义的mock对象将会被注入到这个待测试的对象中,既TestedObj的类型为ClassName的成员被直接赋值为mockedObject。(熟悉依赖注入的同学应该很容易理解)
补充几点:
1. @Mock创建的是全部mock的对象,既在对具体的方法打桩之前,mock对象的所有属性和方法全被置空(0或者null);与之对应的是@Spy这个注解,@Spy可以创建部分mock的对象,部分mock对象的所有成员方法都会按照原方法的逻辑执行,直到被打桩返回某个具体的值。@Mock和@Spy才是两个具有可比性的概念。
2. Mokcito的mock()方法功能与@Mock相同,只是使用方式和场景不同。同样的,@Spy也对应一个spy()方法。
3. @Mock和@Spy注解的对象,均可被@InjectMock注入到待处理的对象中。
java 单元测试inject_Mockito中@Mock与@InjectMock相关推荐
- Mockito中@Mock与@InjectMock
Mockito中@Mock与@InjectMock Mockito是java单元测试中,最常用的mock工具之一,提供了诸多打桩方法和注解.其中有两个比较常用的注解,@Mock和@InjectMock ...
- Java单元测试实践-06.Mock后Stub静态方法
Java单元测试实践-00.目录(9万多字文档+700多测试示例) https://blog.csdn.net/a82514921/article/details/107969340 1. Mock后 ...
- Java单元测试实践-11.Mock后Stub Spring的@Component组件
Java单元测试实践-00.目录(9万多字文档+700多测试示例) https://blog.csdn.net/a82514921/article/details/107969340 1. Sprin ...
- 使用Mockito进行Java单元测试
Google在3月份推出了一个关于Android MVP架构的官方Sample,除MVP架构本身之外,在这个Sample中配备了完善的单元测试用例,这对学习如何在Android中进行单元测试具有极高的 ...
- jmockit教程_java单元测试使用jMockit mock私有方法,jmockitmock,jMockit简直是万能
java单元测试使用jMockit mock私有方法,jmockitmock,jMockit简直是万能 jMockit简直是万能的,私有方法也可以方便的做Mock.如下是mock私有方法的代码: 要测 ...
- Mock和Java单元测试中的Mock框架Mockito介绍
什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象.程序员通常创造模拟对象(mock object)来测试其他对象 ...
- Java单元测试(Junit+Mock+代码覆盖率)
单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进 ...
- 使用 Cobertura 和反射机制提高 Java 单元测试中的代码覆盖率
本文将介绍两种开发实践,用于提高 Java 单元测试中的代码覆盖率.代码覆盖率 = (被测代码 / 代码总数)* 100%.提高被测代码数量或降低代码总数,均可达到提高代码覆盖率的效果.在本文中,您将 ...
- 使用 @MockBean 和 @SpyBean 解决 SpringBoot 单元测试中 Mock 类装配的问题
最近在做某个项目的时候一直使用 @MockBean 来解决单元测试中 Mock 类装配到被测试类的问题.这篇文章主要介绍了 @MockBean 的使用例子以及不使用 @MockBean 而使用@Spy ...
最新文章
- MYSQL 类ORACLE序列实现遇到的问题
- ios开发学习笔记--调用相册或相机(UIImagePickerController)
- python字符串截取及Html解析
- python 元组使用_Python3
- C++对象确定性解析单例模式
- Swift 中的设计模式 #3 外观模式与适配器模式
- wamp php启动不成功,wamp的mysql 启动失败解决
- java注意的一些细节问题
- 11月 北京 | 高性能之GPU CUDA 3天密集式进阶课程
- Angularjs总结(一)表单验证
- Python中的音频和数字信号处理(DSP)
- java jar 启动脚本
- Apache搭建web网站服务器
- html嵌入百度地图无法显示
- APP上架市场隐私政策被拒(关于未经用户同意收集用户信息)
- python将两列内容合并_在pandas/python中,将两列合并为同一数据帧中的一列
- H3C运维审计系统 故障处理手册(笔记)
- 2021物联网国赛zigbee点对点通讯——G卷
- 计算机一级考试PPT部分几分,计算机一级考试PPT幻灯片和最后一题(就是自己输网址)各有多少分啊...
- 人终有一老,大龄程序员该何去何从?从20岁开始卷?