Mockito
1、Mockito可以使用两种方法来Mock对象:
1)通过@Mock注解的方式创建mock对象;
@Mock
HttpContext context;
2)使用mock静态方法
MyClass test = Mockito.mock(MyClass.class);
when(test.getUniqueId()).thenReturn(43);
2、when(….).thenReturn(….)
可以被用来定义当条件满足时函数的返回值,如果你需要定义多个返回值,可以多次定义。
Iterator i= mock(Iterator.class); when(i.next()).thenReturn("Mockito").thenReturn("rocks");
String result=i.next()+" "+i.next(); assertEquals("Mockito rocks", result);
3、Mocks 还可以根据传入参数的不同来定义不同的返回值
Comparable c= mock(Comparable.class);
when(c.compareTo("Mockito")).thenReturn(1); when(c.compareTo("Eclipse")).thenReturn(2);
不关心传入的int值是什么,只要是int类型就返回特定值
when(c.compareTo(anyInt())).thenReturn(-1);
相应的还有anyString()、anyLong()、any()等,anyObject()表示任何对象,any(clazz)表示任何属于clazz的对象
4、验证某个方法是否被调用
验证someClassInstance的someMethod方法是否被调
verify(someClassInstance).someMethod(arg1, arg2, ...)
验证someClassInstance的someMethod方法是否被调用了2次
verify(someClassInstance, times(2)).someMethod(arg1, arg2, ...)
此外,还有一些其他描述运行次数的方法,包括至多、至少等
atMost(count), atLeast(count), never()