Mockito mock()和调用记录

时间:2013-10-03 15:39:49

标签: java mockito

我正在使用Mockito进行一些模拟/测试。我的场景很简单:我有一个使用mock()模拟的类,我正在调用这个类(间接)很多次(即~100k)

Mockito似乎为每次调用都保存了一些数据,因此我在某个时刻内耗尽了内存。

我想告诉mockito不要保存任何数据(我不打算调用verify()等等,我只是不在乎,对于这个特定的测试,什么到达那个模拟)。我不想在每次调用时都创建新的模拟。

1 个答案:

答案 0 :(得分:3)

您可以使用Mockito.reset(mock),请注意,在您调用它之后,您的模拟会忘记所有存根以及所有交互,因此您需要重新设置它。 Mockito's documentation on the method有以下使用说明:

List mock = mock(List.class);
when(mock.size()).thenReturn(10);
mock.add(1);

reset(mock);
//at this point the mock forgot any interactions & stubbing

他们也不鼓励使用这种方法,就像您对问题的评论一样。通常这意味着您可以重构您的测试以使其更具针对性:

  

请考虑在冗长,过度指定的测试中编写简单,小巧且集中的测试方法,而不是重置()。在测试方法的中间,第一个潜在的代码气味被重置()。这可能意味着你的测试太多了。按照你的测试方法的低语:“请保持我们小,并专注于单一行为”。在mockito邮件列表上有几个关于它的主题。