首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在anyInt()不起作用时使用mockito的匹配器调用指定的方法

在使用Mockito进行单元测试时,有时候我们需要模拟某个方法的返回值,但是该方法的参数是任意类型的,此时可以使用Mockito的匹配器来解决这个问题。

Mockito提供了一系列的匹配器来匹配不同类型的参数,其中包括anyInt()用于匹配任意整数类型的参数。但是有时候,由于某些原因,anyInt()可能无法正常工作,这时我们可以使用其他的匹配器来调用指定的方法。

下面是使用Mockito的匹配器调用指定方法的步骤:

  1. 导入Mockito的静态方法:import static org.mockito.Mockito.*;
  2. 创建需要进行测试的类的Mock对象:YourClass yourClassMock = mock(YourClass.class);
  3. 使用Mockito的匹配器来设置方法的返回值:when(yourClassMock.yourMethod(anyInt())).thenReturn(yourReturnValue);
    • yourClassMock是你创建的Mock对象
    • yourMethod是你要调用的方法
    • anyInt()是匹配器,用于匹配任意整数类型的参数
    • yourReturnValue是你期望的方法返回值
  • 调用被测试的方法:yourClassMock.yourMethod(123);
    • 这里的参数可以是任意整数类型,因为我们使用了匹配器
  • 验证方法是否被正确调用:verify(yourClassMock).yourMethod(anyInt());
    • 这里使用了匹配器来验证方法是否被正确调用

总结一下,使用Mockito的匹配器调用指定方法的步骤如下:

  1. 导入Mockito的静态方法
  2. 创建需要进行测试的类的Mock对象
  3. 使用Mockito的匹配器来设置方法的返回值
  4. 调用被测试的方法
  5. 验证方法是否被正确调用

对于Mockito的匹配器,还有其他的一些常用方法,如anyString()用于匹配任意字符串类型的参数,anyObject()用于匹配任意对象类型的参数等。你可以根据具体的需求选择合适的匹配器来使用。

希望以上内容能够帮助你解决问题。如果你需要了解更多关于Mockito的使用方法,可以参考腾讯云的Mockito相关产品和产品介绍链接地址:Mockito产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

#Android单元测试学习总结「建议收藏」

验证方法的调用次数 5. 参数匹配器 (matchers) 6. 使用InOrder验证执行执行顺序 7. 使用Spy监控真实对象 8. 使用ArgumentCaptor进行参数捕获 9....doReturn函数代替thenReturn的情况 如当监控真实的对象并且调用真实的函数带来的影响时 List list = new LinkedList(); List spy = spy(list)...参数匹配器 (matchers) Mockito以自然的java风格来验证参数值: 使用equals()函数。...有时,当需要额外的灵活性时你可能需要使用参数匹配器,也就是argument matchers : // 使用内置的anyInt()参数匹配器 when(mockedList.get(anyInt()))...一开始在方法上添加时提示找不到测试方法,@PrepareForTest()括号里面指定的是要测试的目标类。

5.1K20

Mockito 2 参数匹配器

Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值。有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers)。...更多有关 自定义参数匹配器(custom argument matchers)的使用,请参考 ArgumentMatcher 类的 API 文档。 在使用复杂参数匹配器的时候需要谨慎。...尝试给一个干净并且简单的测试的时候,尽量选择自然的参数匹配使用的是  equals() 对比相对偶然使用  anyX() 来说。...参数匹配器的写法 如果你现在正在使用参数匹配器,所有参数(all arguments)都必须由 matches 提供。 下面的示例代码显示校验,但是一些将会应用到打标中。...这种实现方式是基于 Java 编译器中有关静态类型的安全性问题而考虑的,从而带来的结果是你不能在 verified/stubbed 方法外部使用 anyObject(), eq()。

1.2K30
  • Mockito 2 参数匹配器

    Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值。有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers)。...更多有关 自定义参数匹配器(custom argument matchers)的使用,请参考 ArgumentMatcher 类的 API 文档。 在使用复杂参数匹配器的时候需要谨慎。...尝试给一个干净并且简单的测试的时候,尽量选择自然的参数匹配使用的是  equals() 对比相对偶然使用  anyX() 来说。...参数匹配器的写法 如果你现在正在使用参数匹配器,所有参数(all arguments)都必须由 matches 提供。 下面的示例代码显示校验,但是一些将会应用到打标中。...这种实现方式是基于 Java 编译器中有关静态类型的安全性问题而考虑的,从而带来的结果是你不能在 verified/stubbed 方法外部使用 anyObject(), eq()。

    81900

    Java单元测试框架之Mockito指南

    (5)).clear(); // 指定方法调用超时时间 Mockito.verify(mockList, timeout(100)).get(0); // 指定时间内需要完成的次数...//value3 System.out.println(mockMap.put("key3", anyInt())); //异常 // 行为验证时,也支持使用参数匹配器 verify...建议使用方法层面的验证,如:never();// 在验证是否有冗余调用的时候,可使用此种方式。...(可代替参数匹配器使用) 在某些场景中,不光要对方法的返回值和调用进行验证,同时需要验证一系列交互后所传入方法的参数。那么我们可以用参数捕获器来捕获传入方法的参数进行验证,看它是否符合我们的要求。...当你不需要为函数调用打桩时你可以指定一个默认的 answer; @Test public void test12(){ // 创建mock对象、使用默认返回 final ArrayList mockList

    3.1K11

    博文精选|Mockito使用指南

    它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常 PowerMock:这个工具是在EasyMock...testCompile 'org.mockito:mockito-core:1.10.19' ... } Mockito使用方法 Mockito的使用,有详细的api文档,具体可以查看: http...(999)); //你也可以用参数匹配器来验证,此处测试通过 verify(mockedList).get(anyInt()); //此处测试将不通过,因为没调用get(33)...verify(mockedList).get(eq(33)); } 如果你使用了参数匹配器,那么所有参数都应该使用参数匹配器 verify(mock).someMethod(anyInt(),...(), "third argument"); //上面将会抛异常,因为第三个参数不是参数匹配器,一旦使用了参数匹配器来验证,那么所有参数都应该使用参数匹配 验证准确的调用次数,最多、最少、从未等 @Test

    4.3K30

    单元测试组件Mockito

    直接开干 关于Mockito的简介这里就不在赘述了,大家有兴趣可以自行去官方文档查阅,这里主要带大家了解一些常用的Mock方法。...Mock对象,由于 Mock对象 并不会真的执行方法中的代码,所以如果未指定返回值的话会返回默认值(如19行)。...第九、十行我们指定了mockList在执行特定方法后需要返回的值,所以在assertTrue校验是没问题的,但是add("李四"),我们并没设置,所以是false。...校验方法调用次数 //使用mock List mockedList = mock(ArrayList.class); mockedList.add("once"); mockedList.add...,通过注解的方式用使用的话,我们必须在添加初始化mock的代码,不然即使标注了注解也会是null MockitoAnnotations.initMocks(testClass); 关于Mockito更多详细的用法

    4.1K30

    单元测试框架spock和Mockito应用

    Mockito是一个模拟测试框架,可以让你用优雅,简洁的接口写出漂亮的单元测试。Mockito可以让单元测试易于可读,产生简洁的校验错误。TDD测试驱动开发要求我们先写单元测试,再写实现代码。...import static org.mockito.Matchers.anyInt import static org.mockito.Mockito.* class Demo extends Specification...mockedList.add("3") mockedList.add("3") mockedList.add("3") expect:"验证属性以及方法调用次数...listsss.get(3) } /** * 对于未指定mock的方法,spy默认会调用真实的方法,有返回值的返回真实的返回值,而mock默认不执行,有返回值的,默认返回null...,Mockito的基础功能在spock应用还是非常流畅的,但是一些高级语法还是无法使用,如果在实际项目中使用请多调研两者差别,大概率还是要混合编程。

    2.4K50

    单元测试的正确姿势

    单元测试也是一种特殊类型的文档,相对于书面的文档,测试脚本本身往往就是对被测试代码的实际的使用代码,对于帮助开发人员理解被测试单元的使用是相当有帮助的。...适用范围 java后端研发人员 单元测试框架 推荐使用:Junit5 & Mockito 框架的选择大同小异。...-- mockito-inline相关内联依赖,里面包含了mockito-core,因此无需额外引入mockito-core, mockito-inline增强了对静态类测试的方法;替代powermock.../testme Controller层测试 1、@BeforeEach中获取mockMvc实例 2、@Mock 模拟外部实例类,如调用的service 3、通过mockMvc调用http method请求...(200, result.getResponse().getStatus()); } } Service层测试 1、@BeforeEach中开启mock环境 2、@Mock 模拟外部实例类,如调用的

    24910

    单元测试指南

    它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。...参数匹配器(matchers) Mockito以自然的java风格来验证参数值: 使用equals()函数。...有时,当需要额外的灵活性时你可能需要使用参数匹配器,也就是argument matchers: // 使用内置的anyInt()参数匹配器 when(mockedList.get(anyInt()))....(mockedList).get(anyInt()); 参数匹配器使验证和测试桩变得更灵活。...当你使用这个spy对象时真实的对象也会也调用,除非它的函数被stub了。尽量少使用spy对象,使用时也需要小心形式,例如spy对象可以用来处理遗留代码。

    6.2K20

    Mockito和PowerMock用法

    在单元测试中,我们往往想去独立地去测一个类中的某个方法,但是这个类可不是独立的,它会去调用一些其它类的方法和service,这也就导致了以下两个问题:外部服务可能无法在单元测试的环境中正常工作,因为它们可能需要访问数据库或者使用一些其它的外部系统...遇到这样情况时,你可以在你能访问的地方使用MockService替代,模拟实现获取数据。...PowerMock可以实现完成对private/static/final方法的Mock(模拟),而Mockito可以对普通的方法进行Mock,如:public等。...N 次 // 参数匹配也可以为:verify(mock).someMethod(anyInt(), anyString()); 四、PowerMock的使用 PowerMock基于Mockito开发,...起语法规则与Mockito一致,主要区别在于使用方面,以实现完成对private/static/final等方法(也支持mock的对象是在方法内部new出来的)的Mock(模拟)。

    3.2K32

    Mockito模拟进行单元测试

    最后方法也根据我们设定好的数据进行了输出,并没有进行调用mysql的操作:这样的好处时在生产环境跑单元测试时也不会影响数据库的数据 注意这次调用:有通过AopContext来获取当前代理类的操作...剩余还有mock调用返回值是void的方法时的写法: PowerMockito.doNothing().when(casService).addSupplier(anyLong(), any(ServiceKey.class...when(mock.method(params)).thenRetrun(result)语句设置mock对象的行为,如下语句: // 设置mock对象的行为 - 当调用其get方法获取第0个元素时,返回...(0),然后在调用thenReturn方法时再把“first”保存起来,这样,就有了构建一个stub方法所需的所有信息,构建一个stub。...当get方法被调用的时候,实际上调用的是之前保存的proxy对象的get方法,返回之前保存的数据。

    7K20

    Mockito模拟进行单元测试

    最后方法也根据我们设定好的数据进行了输出,并没有进行调用mysql的操作:这样的好处时在生产环境跑单元测试时也不会影响数据库的数据 ?...剩余还有mock调用返回值是void的方法时的写法: PowerMockito.doNothing().when(casService).addSupplier(anyLong(), any(ServiceKey.class...when(mock.method(params)).thenRetrun(result)语句设置mock对象的行为,如下语句: // 设置mock对象的行为 - 当调用其get方法获取第0个元素时,返回...(0),然后在调用thenReturn方法时再把“first”保存起来,这样,就有了构建一个stub方法所需的所有信息,构建一个stub。...当get方法被调用的时候,实际上调用的是之前保存的proxy对象的get方法,返回之前保存的数据。

    9.5K20

    Java单元测试Mock工具Mockito介绍

    新特性介绍: https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2 接下来介绍Mockito的具体使用: 1、引入依赖: 3.7.7 test 2、模拟对象 具体的方式有2种:调用spy方法,或加Spy注解; 先讲下我们的范例代码,假设我们有个简单的...,在添加帖子的时候需要调用用户服务来查询用户信息,这里不讨论代码组织是否合理,是否用到了DDD,只是一个例子说明如何使用Mockito; 先看看spy方法如何Mock: import static org.mockito.Mockito.spy...MockitoAnnotations.openMocks,不然会报错; 可以看到上面拦截方法调用的语法是Mockito.when(..).thenReturn when传方法,thenReturn传递要返回的结果...,如果when要带参数,一般是这样的格式, Mockito.anyInt(),Mockito定义了很多常用类型,可以根据自己需要选择; 3、模拟静态方法 如果要用Mockito模拟静态方法,一是要保证

    3.3K40
    领券