首页
学习
活动
专区
工具
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()括号里面指定是要测试目标类。

5K20

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()。

78800

博文精选|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.2K30

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

1.7K10

单元测试组件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.3K50

单元测试正确姿势

单元测试也是一种特殊类型文档,相对于书面的文档,测试脚本本身往往就是对被测试代码实际使用代码,对于帮助开发人员理解被测试单元使用是相当有帮助。...适用范围 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 模拟外部实例类,调用

22210

单元测试指南

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

6.1K20

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(模拟)。

3K32

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方法,返回之前保存数据。

6.9K20

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.3K20

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.2K40
领券