gradle引入testImplementation "org.mockito:mockito-core:2.+"
magReader = mock(MagReader.class);
1.可以通过when方法来通过指定调用的某个方法的返回值。
when(magReader.read()).thenReturn(null);
2.使用verify方法来验证某个方法的调用方式。
List list = mock(List.class);
list.add("1");
verify(list).add("1");
验证是list对象是否调用add("1"),如果不是则会报以下错误:
Expected :list.add("2");
Actual :list.add("1");
verify方法可以同过参数设置为预计该函数被调用几次:
List list = mock(List.class);
list.add("1");
verify(list, never()).add("1");
verify(list, times(1)).add("1");
verify(list, times(2)).add("1");
上述代码分别是验证add方法被调用了0,1,2次。
//至少被调用一次
atLeastOnce();
//最少被调用几次
atLeast(int minNumberOfInvocations);
//最调用几次
times(int wantedNumberOfInvocations);、
//最多被调用几次
atMost(int wantedNumberOfInvocations);
//等价于
//verify(mock).someMethod();
//verifyNoMoreInvocations(mock);
only() ;
//
Calls calls(int wantedNumberOfInvocations)
//
NoMoreInteractions noMoreInteractions()
3.spy和mock相比,spy模拟出的对象是真实的对象,而mock不是,差距就是spy会运行真实的方法中代码,而mock不会。可以想到的是,如果真实函数中存在耗时操作也会进行测试耗时。