java - Mockito mock() 和调用记录

标签 java mockito

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

Mockito 似乎为每次调用保存了一些数据,所以我在某个时间点耗尽了内存。

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

最佳答案

您可以使用 Mockito.reset(mock),请注意,在您调用它之后,您的 mock 将忘记所有 stub 以及所有交互,因此您需要重新设置它. 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

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

Instead of reset() please consider writing simple, small and focused test methods over lengthy, over-specified tests. First potential code smell is reset() in the middle of the test method. This probably means you're testing too much. Follow the whisper of your test methods: "Please keep us small & focused on single behavior". There are several threads about it on mockito mailing list.

关于java - Mockito mock() 和调用记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19163378/

相关文章:

java - 保留一个数组中位于另一个数组中的特定元素

java - 如何将列表对象转换为 JavaDStream Spark?

Java 按钮悬停

java - Salesforce REST API 查询超过 2000

java - 为什么在不定义 "when"方法的情况下使用 Mockito 进行 JUnit 测试?

java - java eclipse中生成自增序列号

java - 确定两个列表相等而不关心订购 Mockito

java - 是否可以使用 @Spy 表示法在 Mockito 中声明但不能实例化一个 spy 对象?

java - 如何使用 Mockito 模拟默认接口(interface)方法?

object - 使用 Mockito 模拟局部范围对象的方法