我正在使用Mockito framework在我的JUnit测试中创建Mock对象。每个模拟知道什么方法被调用就可以了,所以在我的测试,我可以写做模拟对象得到重置为每个测试?
verify(myMock, atLeastOnce()).myMethod();
我想知道的是什么已经叫这个内部模拟知识会在我的测试中仍然存在?如果它仍然存在,那么在两次测试中使用相同的verify
方法时,我可能会得到误报。
A码示例
@RunWith(MockitoJUnitRunner.class)
public class EmrActivitiesImplTest {
@Mock private MyClass myMock;
@Before
public void setup() {
when(myMock.myMethod()).thenReturn("hello");
}
@Test
public void test1() {
// ..some logic
verify(myMock, atLeastOnce()).myMethod();
}
@Test
public void test2() {
// ..some other logic
verify(myMock, atLeastOnce()).myMethod();
}
}
模拟状态被持续 - 无论TEST2会通,因为TEST1的验证方法传递
模拟状态被复位 - 如果myMock.myMethod()不是TEST2将失败称为
如果我没有错,在所有测试之前设置被调用一次...所以是的,所有的测试都使用相同的模拟对象。您需要在每种测试方法开始时创建该对象 –