目录

(七) 使用注解来快速模拟

目录

在前面的测试中我们在每个测试方法里都mock了一个List对象,为了避免重复的mock,是测试类更具有可读性,我们可以使用下面的注解方式来快速模拟对象:

import org.junit.Test;
import org.mockito.Mock;
import static org.mockito.Mockito.*;

import java.util.List;

public class MockitoDemo2 {

    @Mock
    private List mockList;

    @Test
    public void shorthand(){
        mockList.add(1);
        verify(mockList).add(1);
    }
}

运行这个测试类你会发现报NullPointerException错,mock的对象为NULL,为此我们必须在基类中添加初始化mock的代码:

import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.mockito.Mockito.*;

import java.util.List;

public class MockitoDemo2 {

    @Mock
    private List mockList;

    public MockitoDemo2(){
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void shorthand(){
        mockList.add(1);
        verify(mockList).add(1);
    }
}

或者使用built-in runner:MockitoJUnitRunner:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import static org.mockito.Mockito.*;

import java.util.List;

@RunWith(MockitoJUnitRunner.class)
public class MockitoDemo2 {

    @Mock
    private List mockList;

    @Test
    public void shorthand(){
        mockList.add(1);
        verify(mockList).add(1);
    }
}

原始封面

https://images.unsplash.com/photo-1531973576160-7125cd663d86?w=300