@Mock 和 @InjectMock 是否为我的测试类中的每个测试创建一个新的模拟值?想知道这是如何工作的,如果它没有创建新的模拟值,我是否必须使用 reset ?
问问题
332 次
2 回答
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 文档中的 Mockito.when )。
于 2013-11-15T19:35:22.587 回答
1
在每个测试方法之前初始化模拟。
于 2013-11-14T21:00:52.250 回答