1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 6package org.mockito; 7 8import org.mockito.verification.VerificationMode; 9 10/** 11 * Allows verification in order. E.g: 12 * 13 * <pre class="code"><code class="java"> 14 * InOrder inOrder = inOrder(firstMock, secondMock); 15 * 16 * inOrder.verify(firstMock).add("was called first"); 17 * inOrder.verify(secondMock).add("was called second"); 18 * </code></pre> 19 * 20 * As of Mockito 1.8.4 you can verifyNoMoreInteractions() in order-sensitive way. Read more: {@link InOrder#verifyNoMoreInteractions()} 21 * <p> 22 * 23 * See examples in javadoc for {@link Mockito} class 24 */ 25public interface InOrder { 26 /** 27 * Verifies interaction <b>happened once</b> in order. 28 * <p> 29 * Alias to <code>inOrder.verify(mock, times(1))</code> 30 * <p> 31 * Example: 32 * <pre class="code"><code class="java"> 33 * InOrder inOrder = inOrder(firstMock, secondMock); 34 * 35 * inOrder.verify(firstMock).someMethod("was called first"); 36 * inOrder.verify(secondMock).someMethod("was called second"); 37 * </code></pre> 38 * 39 * See examples in javadoc for {@link Mockito} class 40 * 41 * @param mock to be verified 42 * 43 * @return mock object itself 44 */ 45 <T> T verify(T mock); 46 47 /** 48 * Verifies interaction in order. E.g: 49 * 50 * <pre class="code"><code class="java"> 51 * InOrder inOrder = inOrder(firstMock, secondMock); 52 * 53 * inOrder.verify(firstMock, times(2)).someMethod("was called first two times"); 54 * inOrder.verify(secondMock, atLeastOnce()).someMethod("was called second at least once"); 55 * </code></pre> 56 * 57 * See examples in javadoc for {@link Mockito} class 58 * 59 * @param mock to be verified 60 * @param mode for example times(x) or atLeastOnce() 61 * 62 * @return mock object itself 63 */ 64 <T> T verify(T mock, VerificationMode mode); 65 66 67 /** 68 * Verifies that no more interactions happened <b>in order</b>. 69 * Different from {@link Mockito#verifyNoMoreInteractions(Object...)} because the order of verification matters. 70 * <p> 71 * Example: 72 * <pre class="code"><code class="java"> 73 * mock.foo(); //1st 74 * mock.bar(); //2nd 75 * mock.baz(); //3rd 76 * 77 * InOrder inOrder = inOrder(mock); 78 * 79 * inOrder.verify(mock).bar(); //2n 80 * inOrder.verify(mock).baz(); //3rd (last method) 81 * 82 * //passes because there are no more interactions after last method: 83 * inOrder.verifyNoMoreInteractions(); 84 * 85 * //however this fails because 1st method was not verified: 86 * Mockito.verifyNoMoreInteractions(mock); 87 * </code></pre> 88 */ 89 void verifyNoMoreInteractions(); 90} 91