Home | History | Annotate | Download | only in annotation
      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.annotation;
      6 
      7 import org.assertj.core.api.Assertions;
      8 import org.junit.Test;
      9 import org.mockito.*;
     10 import org.mockito.exceptions.base.MockitoException;
     11 import org.mockitoutil.TestBase;
     12 
     13 import java.util.List;
     14 
     15 import static org.junit.Assert.fail;
     16 
     17 public class WrongSetOfAnnotationsTest extends TestBase {
     18 
     19     @Test(expected=MockitoException.class)
     20     public void should_not_allow_Mock_and_Spy() throws Exception {
     21         MockitoAnnotations.initMocks(new Object() {
     22             @Mock @Spy List<?> mock;
     23         });
     24     }
     25 
     26     @Test
     27     public void should_not_allow_Spy_and_InjectMocks_on_interfaces() throws Exception {
     28         try {
     29             MockitoAnnotations.initMocks(new Object() { @InjectMocks @Spy List<?> mock; });
     30             fail();
     31         } catch (MockitoException me) {
     32             Assertions.assertThat(me.getMessage()).contains("'List' is an interface");
     33         }
     34     }
     35 
     36     @Test
     37     public void should_allow_Spy_and_InjectMocks() throws Exception {
     38         MockitoAnnotations.initMocks(new Object() {
     39             @InjectMocks
     40             @Spy
     41             WithDependency mock;
     42         });
     43     }
     44     static class WithDependency { List<?> list; }
     45 
     46     @Test(expected=MockitoException.class)
     47     public void should_not_allow_Mock_and_InjectMocks() throws Exception {
     48         MockitoAnnotations.initMocks(new Object() {
     49             @InjectMocks @Mock List<?> mock;
     50         });
     51     }
     52 
     53     @Test(expected=MockitoException.class)
     54     public void should_not_allow_Captor_and_Mock() throws Exception {
     55         MockitoAnnotations.initMocks(new Object() {
     56             @Mock @Captor ArgumentCaptor<?> captor;
     57         });
     58     }
     59 
     60     @Test(expected=MockitoException.class)
     61     public void should_not_allow_Captor_and_Spy() throws Exception {
     62         MockitoAnnotations.initMocks(new Object() {
     63             @Spy @Captor ArgumentCaptor<?> captor;
     64         });
     65     }
     66 
     67     @Test(expected=MockitoException.class)
     68     public void should_not_allow_Captor_and_InjectMocks() throws Exception {
     69         MockitoAnnotations.initMocks(new Object() {
     70             @InjectMocks @Captor ArgumentCaptor<?> captor;
     71         });
     72     }
     73 }
     74