创建由 Mockito 模拟的对象

创建由 Mockito 模拟的对象有两种方法:

  • 通过注释
  • 通过模拟功能

通过注释:

使用 JUnit 测试运行器:

@RunWith(MockitoJUnitRunner.class)
public class FooTest {
    @Mock
    private Bar barMock;

    // ...
}

你也可以使用 Mockito 的 JUnit @Rule,它提供与 MockitoJUnitRunner 相同的功能,但不需要 @RunWith 测试运行器:

public class FooTest {
    @Rule
    public MockitoRule mockito = MockitoJUnit.rule();        

    @Mock
    private Bar barMock;

    // ...
}

如果你不能使用 @RunWith@Rule 注释,你也可以按手初始化:

public class FooTest {
    @Mock
    private Bar barMock;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    }

    // ...
}

通过模拟功能:

public class FooTest {
    private Bar barMock = Mockito.mock(Bar.class);

    // ...
}

由于类型擦除,你不能像上面那样模拟泛型类。你必须模拟基类并显式转换为正确的泛型类型:

public class FooTest {
    private Bar<String> genericBarMock = (Bar<String>) Mockito.mock(Bar.class);

    // ...
}