blob: 61214fd99774f7a6941081a792fc96f6aca51b08 [file] [log] [blame]
package org.mockitousage;
import org.junit.Before;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import static org.mockito.BDDMockito.*;
public class CompilationWarningsTest {
@Before
public void pay_attention_to_compilation_warnings_and_JDK_version() {
}
@Test
public void no_warnings_for_most_common_api() throws Exception {
doReturn(null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doReturn("a", 12).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doReturn(1000).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doThrow(new NullPointerException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doThrow(new NullPointerException(), new IllegalArgumentException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doThrow(NullPointerException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doAnswer(ignore()).doReturn(null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doAnswer(ignore()).doReturn("a", 12).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doAnswer(ignore()).doReturn(1000).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doAnswer(ignore()).doThrow(new NullPointerException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doAnswer(ignore()).doThrow(new NullPointerException(), new IllegalArgumentException()).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doAnswer(ignore()).doThrow(NullPointerException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn(null);
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn("a", 12L);
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn(1000);
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(new NullPointerException());
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(new NullPointerException(), new IllegalArgumentException());
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(NullPointerException.class);
when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn(null);
when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn("a", 12L);
when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn(1000);
when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenThrow(new NullPointerException());
when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenThrow(new NullPointerException(), new IllegalArgumentException());
when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenThrow(NullPointerException.class);
willReturn(null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willReturn("a", 12).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willReturn(1000).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willThrow(new NullPointerException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willThrow(new NullPointerException(), new IllegalArgumentException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willThrow(NullPointerException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willAnswer(ignore()).willReturn(null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willAnswer(ignore()).willReturn("a", 12).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willAnswer(ignore()).willReturn(1000).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willAnswer(ignore()).willThrow(new NullPointerException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willAnswer(ignore()).willThrow(new NullPointerException(), new IllegalArgumentException()).given(mock(IMethods.class)).objectReturningMethodNoArgs();
willAnswer(ignore()).willThrow(NullPointerException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn(null);
given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn("a", 12L);
given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn(1000);
given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(new NullPointerException());
given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(new NullPointerException(), new IllegalArgumentException());
given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(NullPointerException.class);
given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn(null);
given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn("a", 12L);
given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn(1000);
given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willThrow(new NullPointerException());
given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willThrow(new NullPointerException(), new IllegalArgumentException());
given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willThrow(NullPointerException.class);
}
@Test
@SuppressWarnings("unchecked")
public void heap_pollution_JDK7plus_warning_avoided_BUT_now_unchecked_generic_array_creation_warnings_ON_JDK5plus_environment() throws Exception {
doThrow(NullPointerException.class, IllegalArgumentException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenThrow(NullPointerException.class, IllegalArgumentException.class);
doAnswer(ignore()).doThrow(NullPointerException.class, IllegalArgumentException.class).when(mock(IMethods.class)).objectReturningMethodNoArgs();
willThrow(NullPointerException.class, IllegalArgumentException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
given(mock(IMethods.class).objectReturningMethodNoArgs()).willThrow(NullPointerException.class, IllegalArgumentException.class);
willAnswer(ignore()).willThrow(NullPointerException.class, IllegalArgumentException.class).given(mock(IMethods.class)).objectReturningMethodNoArgs();
}
@Test
public void unchecked_confusing_null_argument_warnings() throws Exception {
doReturn(null, (Object[]) null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
doAnswer(ignore()).doReturn(null, (Object[]) null).when(mock(IMethods.class)).objectReturningMethodNoArgs();
when(mock(IMethods.class).objectReturningMethodNoArgs()).thenReturn(null, (Object[]) null);
when(mock(IMethods.class).objectReturningMethodNoArgs()).then(ignore()).thenReturn(null, (Object[]) null);
willReturn(null, (Object[]) null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
given(mock(IMethods.class).objectReturningMethodNoArgs()).willReturn(null, (Object[]) null);
willAnswer(ignore()).willReturn(null, (Object[]) null).given(mock(IMethods.class)).objectReturningMethodNoArgs();
given(mock(IMethods.class).objectReturningMethodNoArgs()).will(ignore()).willReturn(null, (Object[]) null);
}
private static Answer<?> ignore() {
return new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
return null;
}
};
}
}