用户工具


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<String> 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");
    }
}