@Mock和@InjectMock是否为我的测试类中的每个测试创建了一个新的模拟值?想知道这是如何工作的,如果它不创建一个新的模拟值,我是否必须使用重置?
答案 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:
在每种测试方法之前初始化模拟。