• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 package org.mockitousage.verification;
6 
7 import static org.assertj.core.api.Assertions.assertThat;
8 import static org.junit.Assert.fail;
9 import static org.mockito.Mockito.*;
10 
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.mockito.InOrder;
14 import org.mockito.exceptions.verification.VerificationInOrderFailure;
15 import org.mockito.exceptions.verification.WantedButNotInvoked;
16 import org.mockitousage.IMethods;
17 import org.mockitoutil.TestBase;
18 
19 public class VerificationInOrderTest extends TestBase {
20 
21     private IMethods mockOne;
22     private IMethods mockTwo;
23     private IMethods mockThree;
24     private InOrder inOrder;
25 
26     @Before
setUp()27     public void setUp() {
28         mockOne = mock(IMethods.class);
29         mockTwo = mock(IMethods.class);
30         mockThree = mock(IMethods.class);
31 
32         inOrder = inOrder(mockOne, mockTwo, mockThree);
33     }
34 
35     @Test
shouldVerifySingleMockInOrderAndNotInOrder()36     public void shouldVerifySingleMockInOrderAndNotInOrder() {
37         mockOne = mock(IMethods.class);
38         inOrder = inOrder(mockOne);
39 
40         mockOne.simpleMethod(1);
41         mockOne.simpleMethod(2);
42 
43         verify(mockOne).simpleMethod(2);
44         verify(mockOne).simpleMethod(1);
45 
46         inOrder.verify(mockOne).simpleMethod(2);
47         try {
48             inOrder.verify(mockOne).simpleMethod(1);
49             fail();
50         } catch (VerificationInOrderFailure e) {
51         }
52     }
53 
54     @Test
shouldMessagesPointToProperMethod()55     public void shouldMessagesPointToProperMethod() {
56         mockTwo.differentMethod();
57         mockOne.simpleMethod();
58 
59         try {
60             inOrder.verify(mockOne, atLeastOnce()).differentMethod();
61             fail();
62         } catch (WantedButNotInvoked e) {
63             assertThat(e).hasMessageContaining("differentMethod()");
64         }
65     }
66 
67     @Test
shouldVerifyInOrderWhenTwoChunksAreEqual()68     public void shouldVerifyInOrderWhenTwoChunksAreEqual() {
69         mockOne.simpleMethod();
70         mockOne.simpleMethod();
71         mockTwo.differentMethod();
72         mockOne.simpleMethod();
73         mockOne.simpleMethod();
74 
75         inOrder.verify(mockOne, times(2)).simpleMethod();
76         inOrder.verify(mockTwo).differentMethod();
77         inOrder.verify(mockOne, times(2)).simpleMethod();
78         try {
79             inOrder.verify(mockOne, atLeastOnce()).simpleMethod();
80             fail();
81         } catch (VerificationInOrderFailure e) {
82         }
83     }
84 
85     @Test
shouldVerifyInOrderUsingMatcher()86     public void shouldVerifyInOrderUsingMatcher() {
87         mockOne.simpleMethod(1);
88         mockOne.simpleMethod(2);
89         mockTwo.differentMethod();
90         mockOne.simpleMethod(3);
91         mockOne.simpleMethod(4);
92 
93         verify(mockOne, times(4)).simpleMethod(anyInt());
94 
95         inOrder.verify(mockOne, times(2)).simpleMethod(anyInt());
96         inOrder.verify(mockTwo).differentMethod();
97         inOrder.verify(mockOne, times(2)).simpleMethod(anyInt());
98         try {
99             inOrder.verify(mockOne, times(3)).simpleMethod(anyInt());
100             fail();
101         } catch (VerificationInOrderFailure e) {
102         }
103     }
104 }
105