【发布时间】:2018-01-07 23:54:29
【问题描述】:
我有一个对象列表。我想知道是否调用了某些对象方法。
即:
List<Object> list = ...;
Object first = spy(new Object());
Object second = spy(new Object());
list.add(first);
list.add(second);
callToStringToOnlyOneRandomElement(list);
我想知道如何进行验证部分。如果发生这种情况,测试就OK了:
verify(first, times(1)).toString();
verify(second, never()).toString();
如果发生这种情况,异或:
verify(first, never()).toString();
verify(second, times(1)).toString();
但在其他情况下不会(如果调用了 first.toString() 和 second.toString(),
或者如果两者都没有被调用)。
对于上下文:真正的问题涉及线程和竞争条件。我想知道是否直接处理了 10 个元素,以及是否所有其他元素都进入了私有队列。因为调用是同时发生的,所以没有直接处理数组元素的顺序(这是预期的行为)。
目前,我正在使用Mockito 1.9
【问题讨论】:
-
两次将同一个对象添加到列表中,并检查有问题的方法只调用了一次。
-
你试过什么?您能否向我们展示一些未按预期工作的示例代码或一些研究迹象
-
您提供的上下文和 XOR 的示例 - 它们不相互矛盾吗?
-
@Lino 这是一个“最佳实践”问题。没有“不工作”的例子。
标签: java unit-testing java-8 mockito