当前位置:网站首页 > Java教程 > 正文

java mock测试教程



概述

Mockito 框架是用于单元测试的基本框架,本文将介绍其使用使用方法及作用,也会给出相对应的例子作为参考。详细的业务场景可以参考一下项目中的单元测试编写。文中最后也有关于单元测试的相关文章链接,大家可以去详细了解一下。

一旦 mock 对象被创建了,mock 对象会记住所有的交互,然后你就可以选择性的验证你感兴趣的交互,验证不通过则抛出异常。

默认情况下,所有的函数都有返回值。mock 函数默认返回的是 null,一个空的集合或者一个被对象类型包装的内置类型,例如 0、false 对应的对象类型为 Integer、Boolean;

一旦测试桩函数被调用,该函数将会一致返回固定的值;

对于 static 和 final 方法, Mockito 无法对其 when (…).thenReturn (…) 操作。

参数匹配器使验证和测试桩变得更灵活;

为了合理的使用复杂的参数匹配,使用 equals () 与 anyX () 的匹配器会使得测试代码更简洁、简单。有时,会迫使你重构代码以使用 equals () 匹配或者实现 equals () 函数来帮助你进行测试;

如果你使用参数匹配器,所有参数都必须由匹配器提供;

支持自定义参数匹配器;

验证执行顺序是非常灵活的 - 你不需要一个一个的验证所有交互,只需要验证你感兴趣的对象即可;

你可以仅通过那些需要验证顺序的 mock 对象来创建 InOrder 对象;

一些用户可能会在频繁地使用 verifyNoMoreInteractions (),甚至在每个测试函数中都用。但是 verifyNoMoreInteractions () 并不建议在每个测试函数中都使用;

verifyNoMoreInteractions () 在交互测试套件中只是一个便利的验证,它的作用是当你需要验证是否存在冗余调用时;

注意!下面这句代码需要在运行测试函数之前被调用,一般放到测试类的基类或者 test runner 中:

可以为真实对象创建一个监控 (spy) 对象。当你使用这个 spy 对象时真实的对象也会也调用,除非它的函数被 stub 了;

尽量少使用 spy 对象,使用时也需要小心形式,例如 spy 对象可以用来处理遗留代码;

stub 语法中同样提供了部分 mock 的方法,可以调用真实的方法; 完全 mock: 上文讲的内容是完全 mock,即创建的 mock 对象与真实对象无关,mock 对象的方法默认都是基本的实现,返回基本类型。可基于接口、实现类创建 mock 对象。 部分 mock: 所谓部分 mock,即创建的 mock 对象时基于真实对象的,mock 对象的方法都是默认使用真实对象的方法,除非 stub 之后,才会以 stub 为准。基于实现类创建 mock 对象,否则在没有 stub 的情况下,调用真实方法时,会出现异常。 注意点: Mockito 并不会为真实对象代理函数调用,实际上它会拷贝真实对象。因此如果你保留了真实对象并且与之交互,不要期望从监控对象得到正确的结果。 当你在监控对象上调用一个没有被 stub 的函数时并不会调用真实对象的对应函数,你不会在真实对象上看到任何效果

在某些场景中,不光要对方法的返回值和调用进行验证,同时需要验证一系列交互后所传入方法的参数。那么我们可以用参数捕获器来捕获传入方法的参数进行验证,看它是否符合我们的要求。 ArgumentCaptor 介绍 通过 ArgumentCaptor 对象的 forClass (Class ArgumentCaptor 的 Api argument.capture () 捕获方法参数 argument.getValue () 获取方法参数值,如果方法进行了多次调用,它将返回最后一个参数值 argument.getAllValues () 方法进行多次调用后,返回多个参数值

  • 上一篇: 46集java教程
  • 下一篇: java程序在线教程
  • 版权声明


    相关文章:

  • 46集java教程2024-11-28 15:42:00
  • java扎实教程2024-11-28 15:42:00
  • 带项目的Java教程2024-11-28 15:42:00
  • java传递机制教程2024-11-28 15:42:00
  • date java 菜鸟教程2024-11-28 15:42:00
  • java程序在线教程2024-11-28 15:42:00
  • opencv 开发教程 java2024-11-28 15:42:00
  • java strust 教程2024-11-28 15:42:00
  • 尚学堂科技.马士兵.java视频教程2024-11-28 15:42:00
  • pdf教程 java2024-11-28 15:42:00