Mockito 其他使用
2018-01-09 18:07
204 查看
上篇文章介绍了几种使用Mockito书写Unit Test code的常用场景。这篇文章介绍接种Mockito的其他使用情况。
这样就不用每次在@Test方法中,调用mock方法模拟对象了, 直接调用mockList方法即可
注意:需要先在setUp()方法中调用一下这行代码 MockitoAnnotations.initMocks(this);
argument.getValue() 获取方法参数值,如果方法进行了多次调用,它将返回最后一个参数值
argument.getAllValues() 方法进行多次调用后,返回多个参数值
应用实例
注解
@Mock private List mockList;
这样就不用每次在@Test方法中,调用mock方法模拟对象了, 直接调用mockList方法即可
注意:需要先在setUp()方法中调用一下这行代码 MockitoAnnotations.initMocks(this);
使用Spy监控真实对象
使用spy来监控真实的对象,需要注意的是此时我们需要谨慎的使用when-then语句,而改用do-when语句@Test(expected = IndexOutOfBoundsException.class) public void spyOnRealObjects(){ List list = new LinkedList(); List spy = spy(list); //下面预设的spy.get(0)会报错,因为会调用真实对象的get(0),所以会抛出越界异常 //when(spy.get(0)).thenReturn(3); //使用doReturn-when可以避免when-thenReturn调用真实对象api doReturn(999).when(spy).get(999); //预设size()期望值 when(spy.size()).thenReturn(100); //调用真实对象的api spy.add(1); spy.add(2); assertEquals(100,spy.size()); assertEquals(1,spy.get(0)); assertEquals(2,spy.get(1)); verify(spy).add(1); verify(spy).add(2); assertEquals(999,spy.get(999)); spy.get(2); }
利用ArgumentCaptor(参数捕获器) 捕获方法参数进行验证
在某些场景中,不光要对方法的返回值和调用进行验证,同时需要验证一系列交互后所传入方法的参数。那么我们可以用参数捕获器来捕获传入方法的参数进行验证,看它是否符合我们的要求。ArgumentCaptor介绍
通过ArgumentCaptor对象的forClass(Class clazz)方法来构建ArgumentCaptor对象。然后便可在验证时对方法的参数进行捕获,最后验证捕获的参数值。如果方法有多个参数都要捕获验证,那就需要创建多个ArgumentCaptor对象处理。ArgumentCaptor的Api
argument.capture() 捕获方法参数argument.getValue() 获取方法参数值,如果方法进行了多次调用,它将返回最后一个参数值
argument.getAllValues() 方法进行多次调用后,返回多个参数值
应用实例
@Test public void argumentCaptorTest() { List mock = mock(List.class); List mock2 = mock(List.class); mock.add("John"); mock2.add("Brian"); mock2.add("Jim"); ArgumentCaptor argument = ArgumentCaptor.forClass(String.class); verify(mock).add(argument.capture()); assertEquals("John", argument.getValue()); verify(mock2, times(2)).add(argument.capture()); assertEquals("Jim", argument.getValue()); assertArrayEquals(new Object[]{"Brian","Jim"},argument.getAllValues().toArray()); }
相关文章推荐
- 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用
- 使用 Mockito 的 @InjectMocks 创建被测试类实例
- junit与testng 分别和mockito 结合使用例子
- 使用 PowerMock 以及 Mockito 实现单元测试
- 单元测试进阶-使用 Mockito 进行测试
- Mockito的使用笔记
- PowerMockito使用详解(转)
- JavaMockito的使用
- Mockito 使用
- PowerMockito使用详解
- android中将Mockito和GreenDao结合使用
- Mockito使用中遇到的问题
- Mockito使用
- 提升单元测试体验的利器--Mockito使用总结
- 测试框架Mockito使用笔记
- PowerMockito的基本使用记录
- 使用Junit和mockito写单测的一些注意点
- Mockito 简单使用
- 基于JUnit使用PowerMock的Mockito扩展在Maven测试项目中的配置说明
- Mockito教程-简单使用