由于verifyNoMoreInteractions带有对象数组,因此我们必须找到一种方法来获取所有创建的模拟。
您可以创建此类
public class MocksCollector { private final List<Object> createdMocks; public MocksCollector() { createdMocks = new linkedList<Object>(); final MockingProgress progress = new ThreadSafeMockingProgress(); progress.setListener(new CollectCreatedMocks(createdMocks)); } public Object[] getMocks() { return createdMocks.toArray(); }}然后在测试中使用它:
public class ATest { private final MocksCollector mocksCollector = new MocksCollector(); @Test public void test() throws Exception { A a1 = mock(A.class); A a2 = mock(A.class); A a3 = mock(A.class); assertEquals("wrong amount of mocks", 3, mocksCollector.getMocks().length); verifyNoMoreInteractions(mocksCollector.getMocks()); a3.doSomething(); verifyNoMoreInteractions(mocksCollector.getMocks()); // fail }}或带有注释:
@RunWith(MockitoJUnitRunner.class)public class A2Test { private final MocksCollector mocksCollector = new MocksCollector(); @Mock private A a1; @Mock private A a2; @Mock private A a3; @Test public void test() throws Exception { assertEquals("wrong amount of mocks", 3, mocksCollector.getMocks().length); verifyNoMoreInteractions(mocksCollector.getMocks()); a2.doSomething(); verifyNoMoreInteractions(mocksCollector.getMocks()); // fail }}它可以工作,但是增加了对嘲笑内部的依赖。



