Mockito单元测试——方法参数
来源:互联网 发布:linux服务器架设 鸟哥 编辑:程序博客网 时间:2024/05/29 17:11
在Mockito测试中我们可以指定我们对方法调用时候的参数,如下写法:
when(list.get(0)).thenReturn("a");
Assert.assertEquals("a", list.get(0));
Assert.assertEquals("a", list.get(0));
但有时候在实际开发中,我们可能需要模拟出入参,那么我们可以使用Mockito内置的一些方法,如下实例:
@Test
public void testAnyArg(){
when(list.get(anyInt())).thenReturn("a");
System.out.println(list.get(234));
}
public void testAnyArg(){
when(list.get(anyInt())).thenReturn("a");
System.out.println(list.get(234));
}
如上代码所示,我们可以使用anyInt来模拟任意类型的int值输入。Mockito还提供了类似的anyByte等方法。
在一些测试场景中,我们可以使用ArgumentCaptor来验证我们的传入参数是否正确。
在Mockito中校验方法参数是否正确,实际还是调用Java对象的equals方法。如下代码,我们可以校验对应的List参数。
@Test
public void testArgus() {
list.add("a");
// 获取需要捕获的方法参数
ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
//verify方法的参数中调用argument.capture()方法来捕获输入的参数
verify(list).add(argument.capture());
//argument中存入了我们之前对方法调用的值
Assert.assertEquals("a", argument.getValue());
list.add("b");
verify(list, times(2)).add(argument.capture());
Assert.assertArrayEquals(new Object[]{"a", "a", "b"}, argument.getAllValues().toArray());
}
public void testArgus() {
list.add("a");
// 获取需要捕获的方法参数
ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
//verify方法的参数中调用argument.capture()方法来捕获输入的参数
verify(list).add(argument.capture());
//argument中存入了我们之前对方法调用的值
Assert.assertEquals("a", argument.getValue());
list.add("b");
verify(list, times(2)).add(argument.capture());
Assert.assertArrayEquals(new Object[]{"a", "a", "b"}, argument.getAllValues().toArray());
}
在测试中我们也可以通过抽象类ArgumentMatcher来实现自定参数验证。
0 0
- Mockito单元测试——方法参数
- 单元测试利器——Mockito
- 单元测试利器——Mockito
- Mockito单元测试——verify
- 单元测试利器——Mockito与PowerMockito
- 使用Mockito进行单元测试【1】——mock and verify
- 单元测试:Mockito
- Mockito单元测试
- 使用Mockito对异步方法进行单元测试
- 使用Mockito对异步方法进行单元测试
- 使用Mockito进行单元测试【2】—— stub 和 高级特性
- 单元测试--Junit和Mockito
- 初学单元测试框架Mockito
- JUnit/Mockito实现单元测试
- JUnit+Mockito单元测试
- Mockito单元测试-answer
- spring autowired mockito单元测试
- JUnit + Mockito 单元测试
- 初识类与对象01
- Android--ListView中添加控件的点击
- 结合实例详解clone()函数,Cloneable接口以及深拷贝与浅拷贝的问题
- PopupWindow
- python语言下linux&windows下安装pcap包
- Mockito单元测试——方法参数
- getHibernateTemplate()的用法
- socket通信简介
- 【bzoj1878】[SDOI2009]HH的项链 树状数组+离线
- Mockito注解基本例子
- Android App整体架构设计
- uva11292-Dragon of Loowater
- HDU2846 Repository 字典树
- 客户端下载服务器视频然后播放