• Home
  • History
  • Annotate
  • 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  
6  package org.mockitousage.verification;
7  
8  import org.junit.Before;
9  import org.junit.Test;
10  import org.mockito.InOrder;
11  import org.mockito.exceptions.verification.VerificationInOrderFailure;
12  import org.mockito.exceptions.verification.WantedButNotInvoked;
13  import org.mockitousage.IMethods;
14  import org.mockitoutil.TestBase;
15  
16  import static org.junit.Assert.fail;
17  import static org.assertj.core.api.Assertions.assertThat;
18  import static org.mockito.Mockito.*;
19  
20  public class VerificationInOrderTest extends TestBase {
21  
22      private IMethods mockOne;
23      private IMethods mockTwo;
24      private IMethods mockThree;
25      private InOrder inOrder;
26  
27      @Before
setUp()28      public void setUp() {
29          mockOne = mock(IMethods.class);
30          mockTwo = mock(IMethods.class);
31          mockThree = mock(IMethods.class);
32  
33          inOrder = inOrder(mockOne, mockTwo, mockThree);
34      }
35  
36      @Test
shouldVerifySingleMockInOrderAndNotInOrder()37      public void shouldVerifySingleMockInOrderAndNotInOrder() {
38          mockOne = mock(IMethods.class);
39          inOrder = inOrder(mockOne);
40  
41          mockOne.simpleMethod(1);
42          mockOne.simpleMethod(2);
43  
44          verify(mockOne).simpleMethod(2);
45          verify(mockOne).simpleMethod(1);
46  
47          inOrder.verify(mockOne).simpleMethod(2);
48          try {
49              inOrder.verify(mockOne).simpleMethod(1);
50              fail();
51          } catch (VerificationInOrderFailure e) {}
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      @Test
shouldVerifyInOrderUsingMatcher()85      public void shouldVerifyInOrderUsingMatcher() {
86          mockOne.simpleMethod(1);
87          mockOne.simpleMethod(2);
88          mockTwo.differentMethod();
89          mockOne.simpleMethod(3);
90          mockOne.simpleMethod(4);
91  
92          verify(mockOne, times(4)).simpleMethod(anyInt());
93  
94          inOrder.verify(mockOne, times(2)).simpleMethod(anyInt());
95          inOrder.verify(mockTwo).differentMethod();
96          inOrder.verify(mockOne, times(2)).simpleMethod(anyInt());
97          try {
98              inOrder.verify(mockOne, times(3)).simpleMethod(anyInt());
99              fail();
100          } catch (VerificationInOrderFailure e) {}
101      }
102  }
103