我正在使用 Mockito 进行一些模拟/测试。我的场景很简单:我有一个模拟使用的类mock()
,并且我正在(间接)调用这个类很多次(即~100k)
Mockito 似乎为每次调用都保存了一些数据,所以我在某个时刻内存不足。
我想告诉 mockito 不要保存任何数据(我不打算打电话verify()
等,我只是不在乎,对于这个特定的测试,什么能达到那个 mock)。我不想在每次调用时都创建新的模拟。
您可以使用Mockito.reset(mock)
,但请注意,在您调用它之后,您的模拟将忘记所有存根以及所有交互,因此您需要重新设置它。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
他们也确实不鼓励使用这种方法,就像你对问题的评论一样。通常这意味着您可以重构您的测试以更加专注:
请考虑在冗长、过度指定的测试中编写简单、小型且集中的测试方法,而不是 reset()。第一个潜在的代码异味是在测试方法中间的 reset() 。这可能意味着您正在测试太多。遵循您的测试方法的耳语:“请让我们保持小规模并专注于单一行为”。在 mockito 邮件列表上有几个关于它的主题。