Mockito单元测试——方法参数
2016-03-29 21:43
232 查看
模拟方法传入参数
在Mockito测试中我们可以指定我们对方法调用时候的参数,如下写法:
when(list.get(0)).thenReturn("a");
Assert.assertEquals("a", list.get(0));
但有时候在实际开发中,我们可能需要模拟出入参,那么我们可以使用Mockito内置的一些方法,如下实例:
@Test
public void testAnyArg(){
when(list.get(anyInt())).thenReturn("a");
System.out.println(list.get(234));
}
如上代码所示,我们可以使用anyInt来模拟任意类型的int值输入。Mockito还提供了类似的anyByte等方法。
利用ArgumentCaptor捕获方法参数进行验证
在一些测试场景中,我们可以使用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());
}
在测试中我们也可以通过抽象类ArgumentMatcher来实现自定参数验证。
在Mockito测试中我们可以指定我们对方法调用时候的参数,如下写法:
when(list.get(0)).thenReturn("a");
Assert.assertEquals("a", list.get(0));
但有时候在实际开发中,我们可能需要模拟出入参,那么我们可以使用Mockito内置的一些方法,如下实例:
@Test
public void testAnyArg(){
when(list.get(anyInt())).thenReturn("a");
System.out.println(list.get(234));
}
如上代码所示,我们可以使用anyInt来模拟任意类型的int值输入。Mockito还提供了类似的anyByte等方法。
利用ArgumentCaptor捕获方法参数进行验证
在一些测试场景中,我们可以使用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());
}
在测试中我们也可以通过抽象类ArgumentMatcher来实现自定参数验证。
相关文章推荐
- 本周游戏体验:卧虎藏龙
- PopupWindow
- C/C++ 获取文件夹下的所有文件列表
- 初识类与对象01
- JavaScript学习笔记2(草稿)
- Mockito单元测试——verify
- 1008 加工木棍问题
- C/C++ 获取文件夹下的所有文件列表
- Android Studio--ListView
- 结合实例详解clone()函数,Cloneable接口以及深拷贝与浅拷贝的问题
- C++ 构造函数或析构函数调用虚函数
- 0329 复利计算器5.0 Juint单元测试 组员 254列志华 253韩麒麟
- 蜜の夜明け
- 希尔排序
- Mockito 单元测试简介以及Stub
- A*算法实现
- hdu 1548 A strange lift 最短路 spfa模板
- 实验1 交叉编译工具链建立实验 64位机问题
- Spring入门
- 一牛人博客导航