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