单元测试Mockito

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

  • Mockito

    • 1.为什么要mock?

      mock等于是创建一个虚拟对象(不会去跑真实的),在测试环境中替换掉真是对象,从而

      • 验证该对象某些方法的调用情况,调用多少次,参数等
      • 给对象做一个定义,指定返回结果或者特定的动作
    • 2.什么是mock,stub和spy

      
      List list = new LinkedList();
      List spy = spy(list);
      
      • mock: Mock 对象是一种完全由测试控制的对象,它模拟了真实对象的行为。Mock 对象通常用于隔离要测试的代码,从而不依赖于外部系统或操作。在 Mockito 中,mock 对象不会保留任何状态,调用未配置的方法通常会返回默认值。
      • stub: Stub 是一种模拟对象,用于为测试提供预定义的响应。Stubbing 指的是设置模拟对象的行为,即当调用某个方法时返回特定的响应。在 Mockito 中,stubbing 是通过 when().thenReturn() 这样的链式调用完成的。
      • spy: Spy 是 Mockito 中的一个功能,它允许你创建一个对象的包装器,这个包装器对于大多数方法调用都是透明的,但是你可以监视或更改某些特定方法的行为。Spy 通常用于部分模拟真实对象的行为。
    • 3.基本的操作:

      • Mock()方法可以用来mock一个对象或者一个接口。当我们不对行为进行具体定义的时候,就会一直是默认值
        • e.g: Random random = Mockito.mock(Random.class, “Test”);
        • e,g: random.nextInt()会一直都是0
        • 验证和断言
          • Verify()验证对象是否发生过某些行为。
            • e.g: Verify(mock).someMethod(..);
          • 断言:Assertions,即assertequals/null/notnull/true等
            • assertEquals(expected,actual);
          • 当使用mock对象时,如果不对其行为进行定义则会返回默认值。在这里对行为进行定义我们称为打桩,即给Mock对象打桩
            • when(method).thenReturn(…)当执行某个方法时,返回某个值
            • when(method).thenThrow(…)当执行某个方法时,抛出异常
    • 4.mock注解:

      • @Mock:
        • 通过这个注释的对象或者接口等同于mock()方法创建
        • 但是需要配合MockitoAnnotation.openMocks(this)去使用
      • @InjectMocks (和mock的区别)
        • injectmocks是mockito框架中的一个功能,它可以用来自动注入mock对象到被测试对象中。它的作用是将mock对象注入到被测试对象的构造函数或属性中,以便在测试中使用。
        • injectMocks用于集成测试,它可以将mock对象注入到被测试的类或方法中,以测试整个系统的正确性和可靠性。InjectMocks可以进行自动注入,将需要被mock的对象注入到被测试的对象中,从而提高测试的效率和精度
        • injectmocks主要是将Mock对象注入到被测试类中,以便测试某些功能
      • @BeforeEach:会在执行测试前执行
        • 一般会设置setup()即测试前的准备
      • @AfterEach:会在执行测试后执行
        • 可以设置after()方法
      • @Spy和Spy
        • 被Spy的对象会走真实的方法,而mock不会
        • Spy()方法的参数是对象实例,而mock参数是class
    • 5.mockito的流程

      1. 添加依赖: 在 Maven 或 Gradle 项目中,首先需要添加 Mockito 的依赖。

        Maven 示例:

        
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>4.x.x</version>
            <scope>test</scope>
        </dependency>
        
        
      2. 创建模拟对象: 使用 Mockito 提供的 mock 方法创建一个模拟对象。

        
        List mockedList = mock(List.class);
        
        
      3. 配置模拟对象(Stubbing): 配置模拟对象的行为,即当调用特定方法时应该返回什么值。

        
        when(mockedList.get(0)).thenReturn("First Element");
        
        
      4. 使用模拟对象: 在测试中使用模拟对象。

        
        String element = mockedList.get(0);
        
        
      5. 验证交互: 验证模拟对象上是否进行了预期的交互。文章来源地址https://www.toymoban.com/news/detail-841272.html

        
        verify(mockedList).get(0);
        

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

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

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

相关文章

  • 单元测试Mockito

    Mockito 1.为什么要mock? mock等于是创建一个虚拟对象(不会去跑真实的),在测试环境中替换掉真是对象,从而 验证该对象某些方法的调用情况,调用多少次,参数等 给对象做一个定义,指定返回结果或者特定的动作 2.什么是mock,stub和spy mock: Mock 对象是一种完全由测试控制

    2024年03月18日
    浏览(41)
  • 单元测试-mockito

    在单元测试中,对于一个类中的方法,常常需要依赖其他类的方法、操作数据dto等对象实例。 方法mock:依赖的方法又可能依赖其他方法,呈现级联的树状结构。 问题:在一些情况下,这个依赖树会很深,其中依赖的一个子方法一旦修改出现问题,如果引起大量的单测不可用

    2024年04月11日
    浏览(71)
  • Spring单元测试+Mockito

    一,背景 单元测试基本上是开发逃不过的一个工作内容,虽然往往因为过于无聊,或者过于麻烦,而停止于项目的迭代之中,不了了之了。其实不是开发们懒,而是上头要求的测试覆盖率高,但是又没有好用的工具,导致工作积压,最后只能舍弃掉这部分。 最近发现Spring+

    2024年04月17日
    浏览(43)
  • Java单元测试之Mockito

    Mockito是一种Java Mock框架,主要就是用来做Mock测试的,它可以模拟任何Spring管理的Bean、模拟方法的返回值、模拟抛出异常等等,同时也会记录调用这些模拟方法的参数、调用顺序,从而可以校验出这个Mock对象是否有被正确的顺序调用,以及按照期望的参数被调用。 Mockito的特

    2024年02月13日
    浏览(49)
  • 【SpringBoot】mockito+junit 单元测试

    CommonServiceImpl 在方法 getSourceCodeMap() 调用了 ServiceA 的方法 list(QueryBO queryBo) 。 org.mockito.exceptions.base.MockitoException: No tests found in ClientSyncServiceImplTest Is the method annotated with @Test? Is the method public? 解决方案: Test引入 org.junit.Test 不要引入 org.junit.jupiter.api.Test 例如获取当前用户 moc

    2024年02月09日
    浏览(43)
  • 单元测试之- mock工具mockito

     常用的mock工具mockito 在编写单元测试时,需要mock依赖的对象,减少依赖对象对测试的影响,Mocktio是常用的mock工具之一,那么mockito提供了哪些功能呢? Mock对象的创建和配置:Mockito可以通过简单的语法创建mock对象,并允许你配置mock对象的行为。 Mock对象的验证:Mockito提供

    2024年02月13日
    浏览(41)
  • 单元测试(mock) 错误org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework;解析

      如果您觉得有用的话,记得给 博主点个赞,评论,收藏一键三连啊 ,写作不易啊^ _ ^。   而且听说 点赞的人每天的运气都不会太差 ,实在白嫖的话,那欢迎常来啊!!! 01 准备 01::01 安装maven dependency helper插件和maven helper插件 用来分析你的依赖 打开idea 选择 File - Settin

    2023年04月08日
    浏览(39)
  • Java单元测试浅析(JUnit+Mockito)

    Java测试我们应该都遇到过,一般我们会被要求做单元测试,来验证我们代码的功能以及效率。 这里来和大家一起探讨下有关单于测试。 是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单

    2024年02月06日
    浏览(62)
  • Junit5+Mockito单元测试详解

    1.宏观层面:AIR原则 A:Automatic(自动化) 全自动执行,输出结果无需人工检查,而是通过断言验证。 I:Independent(独立性) 分层测试,各层之间不相互依赖。 R:Repeatable(可重复) 可重复执行,不受外部环境( 网络、服务、中间件等)影响。 2.微观层面:BCDE原则 B: Bord

    2024年01月17日
    浏览(47)
  • JUnit 5单元测试(三)—— Mockito 模拟

    上一篇讲了 JUnit 5单元测试(二)—— 断言,书接上文开始 JUnit 5单元测试(三)—— Mockito 模拟 想象下面这几种情况你该怎么单元测试: 1.A方法去数据库查询了数据进行了一些处理,该怎么单元测试; 2.在微服务项目中,A方法中调用了远程微服务B方法(或者B方法还没写好

    2024年02月15日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包