Mockito是非常小的一个mock工具,刚开始学习,写下一些学习的收获。
Mockito可以通过annotation和直接使用两种方式。这里针对每种使用方式,都会给出一些例子。
直接使用
我们使用mockito,主要是想通过这个工具,来模拟一些依赖项的实现,从而隔离其它依赖,运行我们的test。
所以,模拟其它接口(包括接口或者其它类的方法或者接口,以下统称为接口)是我们希望它能够帮我们完成的。
首先我们通过mock(clazz)这种方法创造出一个需要被mock的对象,obj,比方说mock(List.class)
然后,可以通过 when(obj.method).thenReturn( return value )这种方法来使得我们模拟的接口返回一个结果给 我们。这样,就模拟了一个简单方法的实现。
annotation
常用的Annotation主要是@InjectMocks和@Mock,@Mock就是要被创建成mock对象的类,而@InjectMocks是需要mock对象的类,一般被annotate的类里面会包含@Mock annotate的类型作为成员变量。annotation方式需要做的就是把@Mock注入到@InjectMocks里面作为mock对象,这一切的发生需要MockitoAnnotations.initMocks(this)的执行,一定要在预先执行。我是这么写:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(dao1.findResult()).thenReturn("123");
when(dao2.findResult()).thenReturn("456");
}