Mockito mock() 和调用记录

And*_*rei 6 java mockito

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

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

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

Ros*_*ter 3

您可以使用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
Run Code Online (Sandbox Code Playgroud)

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

请考虑在冗长、过度指定的测试中编写简单、小型且集中的测试方法,而不是重置()。第一个潜在的代码味道是测试方法中间的reset()。这可能意味着您测试太多。遵循您的测试方法的耳语:“请让我们保持小规模并专注于单一行为”。在mockito 邮件列表上有几个关于它的主题。