package pers.fq.mockito; import org.testng.Assert; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import static org.mockito.Mockito.*; /** * Created by fang on 17/5/5. */ public class MockitoTest { /** * 数据准备 */ @Test public void testDataPrepare() throws Exception { MyClazz mock = mock(MyClazz.class); // 当调用getAge()方法时,返回1 when(mock.getAge()).thenReturn(1); { Assert.assertEquals(mock.getAge(), 1); } // 当调用getAge()方法时, 连续3次调用返回1、2、3 when(mock.getAge()).thenReturn(1, 2, 3); { Assert.assertEquals(mock.getAge(), 1); Assert.assertEquals(mock.getAge(), 2); Assert.assertEquals(mock.getAge(), 3); Assert.assertEquals(mock.getAge(), 3); } // 当调用getAge()方法时, 可以传递任何int类型的参数值 when(mock.plusOne(anyInt())).thenReturn(1); { Assert.assertEquals(mock.plusOne(1), 1); Assert.assertEquals(mock.plusOne(2), 1); } // 当调用isOk()方法时, 可以传递任何Object类型的参数值 when(mock.isOk(anyObject())).thenReturn(true); { Assert.assertEquals(mock.isOk(new ArrayList()), true); Assert.assertEquals(mock.isOk(new HashMap()), true); } // 当调用getAge()方法时,抛出异常 when(mock.getAge()).thenThrow(new NullPointerException("test")); { try { mock.getAge(); }catch (NullPointerException e){ Assert.assertTrue(true); } } } /** * 验证调用行为 */ @Test public void testCallActions() throws Exception { List list = mock(ArrayList.class); list.add("0"); list.add("1"); list.add("1"); // 验证: 调用了1次add("0")方法,(参数要一致)。默认是times(1) verify(list).add("0"); // 验证: 只调用了2次add("1")方法,(参数要一致) verify(list, times(2)).add("1"); // 验证: 最少调用了2次add("1")方法,(参数要一致) verify(list, atLeast(2)).add("1"); // 验证: 最多调用了2次add("1")方法,(参数要一致) verify(list, atMost(2)).add("1"); } }