我正在使用Mockito进行一些模拟/测试。我的场景很简单:我有一个使用 mock()
模拟的类,并且我(间接)大量调用该类(即 ~100k)
Mockito似乎每次调用都会保存一些数据,所以我在某个时候耗尽了内存。
我想告诉 mockito 不要持有任何数据(我不打算打电话给verify()
等,我只是不在乎,对于这个特定的测试,那个模拟会达到什么)。我不想在每次调用时都创建新的模拟。
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 邮件列表中有几个关于它的线程。