天天看点

mockito 学习

<col>

相关对等操作

code

anotation

note

@Before

public void init() {

MockitoAnnotations.initMocks(this);

}

@RunWith(MockitoJUnitRunner.class)

public class MockitoAnnotationTest {

...

用于启用mockito

List mockList = Mockito.mock(ArrayList.class);

@Mock

List&lt;String&gt; mockedList;

mock出的对象,并不会真正执行对应的方法

List&lt;String&gt; spyList = Mockito.spy(new ArrayList&lt;String&gt;());

@Spy

List&lt;String&gt; spiedList = new ArrayList&lt;String&gt;();

spy出的对象,是会真正执行的

ArgumentCaptor&lt;String&gt; arg = ArgumentCaptor.forClass(String.class);

@Captor

ArgumentCaptor argCaptor;

List mockedList;

@Test

public void whenUseCaptorAnnotation_thenTheSam() {

mockedList.add("one");

Mockito.verify(mockedList).add(argCaptor.capture());

assertEquals("one", argCaptor.getValue());

如果你在mock StatusDao的时候希望自动注入mock出client做为属性,那么可以在statusDao增加@InjectMocks

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 

Invalid use of argument matchers!

3 matchers expected, 1 recorded:

原因: executeStoreProcedure方法的mock中,第一个和第三个参数没有使用ArgumentMatchers,而第二个参数使用了ArgumentMatchers,这个是不行的,要么都适用ArgumentMatchers,要么都不用,比如改成都不用: