• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.mockitousage;
2 
3 import org.junit.Before;
4 import org.junit.Test;
5 import org.mockito.invocation.InvocationOnMock;
6 import org.mockito.stubbing.Answer;
7 
8 import static org.mockito.BDDMockito.*;
9 
10 
11 public class CompilationWarningsTest {
12 
13     @Before
pay_attention_to_compilation_warnings_and_JDK_version()14     public void pay_attention_to_compilation_warnings_and_JDK_version() {
15     }
16 
17     @Test
no_warnings_for_most_common_api()18     public void no_warnings_for_most_common_api() throws Exception {
19         doReturn(null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
20         doReturn("a", 12).when(mock(IMethods.class)).objectReturningMethodNoArgs();
21         doReturn(1000).when(mock(IMethods.class)).objectReturningMethodNoArgs();
22         doThrow(new NullPointerException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
23         doThrow(new NullPointerException(), new IllegalArgumentException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
24         doThrow(NullPointerException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
25 
26         doAnswer(ignore()).doReturn(null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
27         doAnswer(ignore()).doReturn("a", 12).when(mock(IMethods.class)).objectReturningMethodNoArgs();
28         doAnswer(ignore()).doReturn(1000).when(mock(IMethods.class)).objectReturningMethodNoArgs();
29         doAnswer(ignore()).doThrow(new NullPointerException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
30         doAnswer(ignore()).doThrow(new NullPointerException(), new IllegalArgumentException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
31         doAnswer(ignore()).doThrow(NullPointerException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
32 
33         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn(null);
34         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn("a", 12L);
35         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn(1000);
36         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(new NullPointerException());
37         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(new NullPointerException(), new IllegalArgumentException());
38         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(NullPointerException.class);
39 
40         when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn(null);
41         when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn("a", 12L);
42         when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn(1000);
43         when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenThrow(new NullPointerException());
44         when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenThrow(new NullPointerException(), new IllegalArgumentException());
45         when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenThrow(NullPointerException.class);
46 
47         willReturn(null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
48         willReturn("a", 12).given(mock(IMethods.class)).objectReturningMethodNoArgs();
49         willReturn(1000).given(mock(IMethods.class)).objectReturningMethodNoArgs();
50         willThrow(new NullPointerException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
51         willThrow(new NullPointerException(), new IllegalArgumentException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
52         willThrow(NullPointerException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
53 
54         willAnswer(ignore()).willReturn(null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
55         willAnswer(ignore()).willReturn("a", 12).given(mock(IMethods.class)).objectReturningMethodNoArgs();
56         willAnswer(ignore()).willReturn(1000).given(mock(IMethods.class)).objectReturningMethodNoArgs();
57         willAnswer(ignore()).willThrow(new NullPointerException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
58         willAnswer(ignore()).willThrow(new NullPointerException(), new IllegalArgumentException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
59         willAnswer(ignore()).willThrow(NullPointerException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
60 
61         given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn(null);
62         given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn("a", 12L);
63         given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn(1000);
64         given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(new NullPointerException());
65         given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(new NullPointerException(), new IllegalArgumentException());
66         given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(NullPointerException.class);
67 
68         given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn(null);
69         given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn("a", 12L);
70         given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn(1000);
71         given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willThrow(new NullPointerException());
72         given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willThrow(new NullPointerException(), new IllegalArgumentException());
73         given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willThrow(NullPointerException.class);
74     }
75 
76     @Test
77     @SuppressWarnings("unchecked")
heap_pollution_JDK7plus_warning_avoided_BUT_now_unchecked_generic_array_creation_warnings_ON_JDK5plus_environment()78     public void heap_pollution_JDK7plus_warning_avoided_BUT_now_unchecked_generic_array_creation_warnings_ON_JDK5plus_environment() throws Exception {
79         doThrow(NullPointerException.class, IllegalArgumentException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
80         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(NullPointerException.class, IllegalArgumentException.class);
81         doAnswer(ignore()).doThrow(NullPointerException.class, IllegalArgumentException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
82 
83         willThrow(NullPointerException.class, IllegalArgumentException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
84         given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(NullPointerException.class, IllegalArgumentException.class);
85         willAnswer(ignore()).willThrow(NullPointerException.class, IllegalArgumentException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
86     }
87 
88     @Test
unchecked_confusing_null_argument_warnings()89     public void unchecked_confusing_null_argument_warnings() throws Exception {
90         doReturn(null, (Object[]) null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
91         doAnswer(ignore()).doReturn(null, (Object[]) null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
92         when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn(null, (Object[]) null);
93         when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn(null, (Object[]) null);
94         willReturn(null, (Object[]) null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
95         given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn(null, (Object[]) null);
96         willAnswer(ignore()).willReturn(null, (Object[]) null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
97         given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn(null, (Object[]) null);
98     }
99 
ignore()100     private static Answer<?> ignore() {
101         return new Answer<Object>() {
102             @Override
103             public Object answer(InvocationOnMock invocation) throws Throwable {
104                 return null;
105             }
106         };
107     }
108 }
109