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

 

posted @ 2018-09-21 10:01  子健儿  阅读(227)  评论(0编辑  收藏  举报