@Mock和@InjectMock用例

时间:2013-11-14 20:19:43

标签: java junit mockito

@Mock和@InjectMock是否为我的测试类中的每个测试创建了一个新的模拟值?想知道这是如何工作的,如果它不创建一个新的模拟值,我是否必须使用重置?

2 个答案:

答案 0 :(得分:2)

@Mock is shorthand for Mockito.mock(Foo.class);

您可以使用它来初始化模拟。

@InjectMocks is shorthand for MockitoAnnotations.initMocks(this) 

您可以使用它来设置使用您创建的所有模拟初始化您的类!

示例测试设置

这将为您编写的每个测试(@Test)提供一个干净的设置。

public class FooTest {
    private Foo foo = new Foo();

    @Mock
    private Bar bar;

    @Before
    public void setup() {
        initMocks(this);
    }

    @Test
    public void testSetupOk() { // delete this test once it passes
        assertNotNull(foo);
        assertNotNull(bar); // this will fail if you remove @Mock
    }
}

您可以一起使用这些注释来正确设置被测试的课程。

请注意,您仍然需要配置模拟以返回所需的行为! (请参阅 API documentation 中的Mockito。)

答案 1 :(得分:1)

根据MockitoJUnitRunner's documentation

  

在每种测试方法之前初始化模拟。