1. 验证行为发生
package mockito;
import org.junit.Test;
import org.mockito.InOrder;
import java.util.List;
import static org.mockito.Mockito.*;
public class VerifyBehaviour {
@Test
public void verifyBehaviour(){
//模拟创建一个List对象
List listMock = mock(List.class);
//使用mock的对象
listMock.add(1);
listMock.add(2);
listMock.add(2);
listMock.add(3);
listMock.add(3);
listMock.add(3);
listMock.clear();
//验证行为是否发生
verify(listMock).add(1);
verify(listMock).clear();
//验证行为发生的次数
verify(listMock).add(1); //默认1次
verify(listMock, times(2)).add(2);
verify(listMock, atLeast(3)).add(3);
verify(listMock, atMost(3)).add(3);
verify(listMock, never()).add(4);
//验证行为发生时长和次数
verify(listMock, timeout(100).atLeast(2)).add(2);
verify(listMock, timeout(100).times(3)).add(3);
List listMock2 = mock(List.class);
listMock2.add(1);
//listMock2.add(2);
//有且只有行为发生
verify(listMock2, only()).add(1);
}
/**
* 确保模拟对象上无互动发生
*/
@Test
public void verify_interaction(){
List list = mock(List.class);
List list2 = mock(List.class);
List list3 = mock(List.class);
list.add(1);
verify(list).add(1);
verify(list, never()).add(2);
//验证零互动行为
verifyZeroInteractions(list2,list3);
}
/**
* 验证执行顺序
*/
@Test
public void verification_in_order(){
List list = mock(List.class);
List list2 = mock(List.class);
list.add(1);
list2.add("hello");
list.add(2);
list2.add("world");
//将需要排序的mock对象放入InOrder
InOrder inOrder = inOrder(list,list2);
//下面的代码不能颠倒顺序,验证执行顺序
inOrder.verify(list).add(1);
inOrder.verify(list2).add("hello");
inOrder.verify(list).add(2);
inOrder.verify(list2).add("world");
}
}