【发布时间】:2015-01-17 03:32:18
【问题描述】:
使用 Mockito 时
我在 2 个测试用例中使用相同的模拟(我知道这是一个糟糕的测试设计,但这是一个实验)
@Test
public void test1()
{
Mockito.when(mock.method1()).thenAnswer(new Answer<Boolean>()
{
@Override
public Boolean answer(InvocationOnMock temp) throws Throwable
{
return true;
}
}
......
}
@Test
public void test2()
{
Mockito.when(mock.method1()).thenReturn(false);
....
}
当测试按顺序运行时
测试1
测试2
模拟的方法在 test2 中仍然返回 true。这是预期的行为还是错误?
更新:
- 方法不是最终的
- 我正在使用 JUnit。
【问题讨论】:
-
method1 是最终的吗?如果是这样,则在这两种情况下都会调用您的实际实现。
-
提供完整的、可重现的测试用例。
-
@user590849 你使用的是 JUnit 还是 TestNG ?
-
我已经回答了所有的 cmets 作为问题的更新。
-
这是预期的行为。谁说如果你对同一个方法进行两次 stub,第二次调用就会真正生效?
标签: mockito