• 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.inOrder;
10 import static org.mockito.Mockito.verify;
11 
12 import org.junit.Test;
13 import org.mockito.InOrder;
14 import org.mockito.Mock;
15 import org.mockito.exceptions.misusing.UnfinishedVerificationException;
16 import org.mockito.exceptions.verification.VerificationInOrderFailure;
17 import org.mockitousage.IMethods;
18 import org.mockitoutil.TestBase;
19 
20 public class FindingRedundantInvocationsInOrderTest extends TestBase {
21 
22     @Mock private IMethods mock;
23     @Mock private IMethods mock2;
24 
25     @Test
shouldWorkFineIfNoInvocations()26     public void shouldWorkFineIfNoInvocations() throws Exception {
27         // when
28         InOrder inOrder = inOrder(mock);
29 
30         // then
31         inOrder.verifyNoMoreInteractions();
32     }
33 
34     @Test
shouldSayNoInteractionsWanted()35     public void shouldSayNoInteractionsWanted() throws Exception {
36         // when
37         mock.simpleMethod();
38 
39         // then
40         InOrder inOrder = inOrder(mock);
41         try {
42             inOrder.verifyNoMoreInteractions();
43             fail();
44         } catch (VerificationInOrderFailure e) {
45             assertThat(e).hasMessageContaining("No interactions wanted");
46         }
47     }
48 
49     @Test
shouldVerifyNoMoreInteractionsInOrder()50     public void shouldVerifyNoMoreInteractionsInOrder() throws Exception {
51         // when
52         mock.simpleMethod();
53         mock.simpleMethod(10);
54         mock.otherMethod();
55 
56         // then
57         InOrder inOrder = inOrder(mock);
58         inOrder.verify(mock).simpleMethod(10);
59         inOrder.verify(mock).otherMethod();
60         inOrder.verifyNoMoreInteractions();
61     }
62 
63     @Test
shouldVerifyNoMoreInteractionsInOrderWithMultipleMocks()64     public void shouldVerifyNoMoreInteractionsInOrderWithMultipleMocks() throws Exception {
65         // when
66         mock.simpleMethod();
67         mock2.simpleMethod();
68         mock.otherMethod();
69 
70         // then
71         InOrder inOrder = inOrder(mock, mock2);
72         inOrder.verify(mock2).simpleMethod();
73         inOrder.verify(mock).otherMethod();
74         inOrder.verifyNoMoreInteractions();
75     }
76 
77     @Test
shouldFailToVerifyNoMoreInteractionsInOrder()78     public void shouldFailToVerifyNoMoreInteractionsInOrder() throws Exception {
79         // when
80         mock.simpleMethod();
81         mock.simpleMethod(10);
82         mock.otherMethod();
83 
84         // then
85         InOrder inOrder = inOrder(mock);
86         inOrder.verify(mock).simpleMethod(10);
87         try {
88             inOrder.verifyNoMoreInteractions();
89             fail();
90         } catch (VerificationInOrderFailure e) {
91         }
92     }
93 
94     @Test
shouldFailToVerifyNoMoreInteractionsInOrderWithMultipleMocks()95     public void shouldFailToVerifyNoMoreInteractionsInOrderWithMultipleMocks() throws Exception {
96         // when
97         mock.simpleMethod();
98         mock2.simpleMethod();
99         mock.otherMethod();
100 
101         // then
102         InOrder inOrder = inOrder(mock, mock2);
103         inOrder.verify(mock2).simpleMethod();
104         try {
105             inOrder.verifyNoMoreInteractions();
106             fail();
107         } catch (VerificationInOrderFailure e) {
108         }
109     }
110 
111     @SuppressWarnings({"MockitoUsage", "CheckReturnValue"})
112     @Test
shouldValidateState()113     public void shouldValidateState() throws Exception {
114         // when
115         InOrder inOrder = inOrder(mock);
116         verify(mock); // mess up state
117 
118         // then
119         try {
120             inOrder.verifyNoMoreInteractions();
121             fail();
122         } catch (UnfinishedVerificationException e) {
123         }
124     }
125 }
126