使用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);
....
}
当测试按顺序运行时
TEST1
TEST2
模拟方法仍然在test2中返回true。这是预期的行为还是这个错误?
更新:
答案 0 :(得分:0)
正如您所提到的,Mockito建议不要在测试用例中重用模拟。
也就是说,您可能想尝试在每个测试用例中重置模拟:
List mock = mock(List.class);
when(mock.size()).thenReturn(10);
mock.add(1);
reset(mock);
//at this point the mock forgot any interactions & stubbing
如果没有帮助
我也看到你在一种方法中使用thenAnswer()
,在另一种方法中使用thenReturn()
。你能考虑在两种情况下使用thenReturn()
吗?
Mockito在其文档中包含了有关回调存根的建议:
我们建议仅使用thenReturn()或thenThrow()使用简单的存根。