Mockito mock与spy的区别

这篇具有很好参考价值的文章主要介绍了Mockito mock与spy的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

##前言

Mockito是一个强大的mock工具,本文将重点讲述Mockito中mock与spy的区别

mock与spy的区别

mock跟spy都可以用于模拟对象,区别是mock产生的对象,并不会真正的执行对象的行为,而spy创建的对象,会真的去执行对象的行为

示例:

@Test
public void mockitoTest2(){
//生成一个mock对象
List<String> mockedList = Mockito.mock(ArrayList.class);
//打印mock对象的类名,看看mock对象为何物
System.out.println("mock List==========="+mockedList.getClass().getName());
//操作mock对象
mockedList.add("one");
System.out.println("0 agr:"+mockedList.get(0));
System.out.println("10 agr:"+mockedList.get(10));


//生成一个spy对象
List<String> spyList = Mockito.spy(ArrayList.class);
//打印mock对象的类名,看看spy对象为何物
System.out.println("spy List============"+spyList.getClass().getName());
//操作mock对象
spyList.add("one");
System.out.println("0 agr:"+spyList.get(0));
System.out.println("10 agr:"+spyList.get(10));
}

输出:

mock List===========org.mockito.codegen.ArrayList$MockitoMock$951596036
0 agr:null
10 agr:null
spy List============org.mockito.codegen.ArrayList$MockitoMock$951596036
0 agr:one

java.lang.IndexOutOfBoundsException: Index: 10, Size: 1

通过代码示例可以看出,对mockedList的操作并没有真正的去执行,而spyList会抛出异常;文章来源地址https://www.toymoban.com/news/detail-506889.html

到了这里,关于Mockito mock与spy的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mockito无法Mock RedisTemplate解决方案

    如题,在SpringBoot工程中使用@MockBean对RedisTemplate进行Mock时发现报错,RedisTemplate连接工厂为null 当尝试将RedisConnectFaction注入测试类进行Mock后发现依然无效。 所以尝试新的解决方案: 将RedisTemplate使用@Spy注入原始类,在测试运行前对RedisTemplate底层方法进行批量Mock 经过测试后成功

    2024年02月12日
    浏览(46)
  • Android单元测试系列(3)-Mock之Mockito

    目录 一、官网 二、Demo示例 1. 目录结构 2. 被测试的类 3. 测试类 三、Mockito方法说明 1. mock对象创建 2. Mockito框架中的常见方法说明 2.1 常见的打桩方法 2.2 常见的验证行为 2.3 其他方法  3. Mockito的局限性 Mockito: https://github.com/mockito/mockito Mockito (Mockito 4.4.0 API) 为什么要用mock:

    2023年04月15日
    浏览(25)
  • Mockito 实现原理(3):如何对 final 类进行 mock

    前面两篇提到,Mockito 默认基于创建派生类(subclass)来实现 mock(包括 spy)。 那么问题来了,如果我的类标记为 final,明确禁止创建派生类,那不就没法 mock 了吗? 为了解决这个问题,Mockito 2 中引入了 InlineByteBuddyMockMaker 。和前面讨论过的默认的 SubclassByteBuddyMockMaker 相比,

    2024年02月09日
    浏览(23)
  • 使用mockito来mock final、static、private以及构造方法

    final 方法 mock final方法(2.1版本开始):对final视而不见,和mock 普通方法一样 stati 方法 mock static方法(3.4版本开始): 使用try-with-resource缩小作用范围 构造方法 mock 构造方法(3.5版本开始):使用try-with-resource缩小作用范围 私有方法 mockito 不支持mock私有方法,采用反射的方式

    2024年02月11日
    浏览(28)
  • Mockito框架下如何优雅的验证调用Mock对象方法的入参

    该文章已同步至个人微信公众号[不能止步],欢迎关注。 在单元测试场景中,一种典型的场景是为了测试某一个类(Component Under Test, 简称CUT)而需要mock其依赖的的类。示例如下: 为了验证CUT业务实现的正确性,通常需要验证传给调用Mock对象的方法的参数的正确性。如果采

    2024年02月09日
    浏览(39)
  • spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用

    spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用 好大一批新用法,大家静下心来好好看看吧 1. spring boot 使用 Mockito.when().thenReturn()模拟返回值 Mockito 是一种 Java mock 框架,他主要就是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean、模拟方法的返回值、模拟抛出异常…

    2024年02月15日
    浏览(41)
  • 开源一个超好用的接口Mock工具——Msw-Tools

    作为一名前端开发,是不是总有这样的体验: 基础功能逻辑和页面UI开发很快速,本来可以提前完成,但是接口数据联调很费劲,耗时又耗力,有时为了保证进度还不得不加加班。 为了摆脱这种痛苦,经过一周的努力,从零开发了一个灵活无依赖,且集成简单的数据接口 M

    2024年02月02日
    浏览(41)
  • [Springboot 单元测试笔记] - Mock 和 spy的使用

    通常单元测试中,我们会隔离依赖对于测试类的影响,也就是假设所有依赖的一定会输出理想结果,在测试中可以通过Mock方法来确保输出结果,这也就引入另一个测试框架Mockito。 Mockito框架的作用就是模拟接口功能,并不运行模拟接口的实际逻辑,而是直接输出一个假定结果

    2024年02月13日
    浏览(30)
  • Mock和Vite-plugin-Mock的区别是什么?

    我不知道大家和我是否有一样的疑问,之前Mock.js用的挺好,为啥又出现了一个vite-plugin-mock,而且这个插件还依赖于Mock.js.那么他的优势到底是什么呢?如果你也有这样的疑问,本文最后会给出答案解开这个谜底 我之前已经百度了好久发现讨论这个问题的人好少,只有一俩个人

    2024年02月10日
    浏览(20)
  • 一个超级大的文件如何更快读

    问题起因 一个有千万的数据的txt文件如何发挥IO的全部性能更快的读和写。 使用ChatGPT4的方案 在C#中,我们可以使用多线程来处理大量的数据并将其写入数据库。在处理大数据时,我们需要将任务分解为多个子任务,这样我们可以在不同的线程中并行执行它们以提高性能。

    2024年02月08日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包