Mock
Date: 2015-09-18

org.mockito

## Annotation Type Mock

-     @Target(value=FIELD)
      @Retention(value=RUNTIME)
      @Documented
      public @interface Mock

  Mark a field as a mock.
  - Allows shorthand mock creation.
  - Minimizes repetitive mock creation code.
  - Makes the test class more readable.
  - Makes the verification error easier to read because the field name is used to identify the mock.

         public class ArticleManagerTest extends SampleBaseTestCase {

             @Mock private ArticleCalculator calculator;
             @Mock(name = "database") private ArticleDatabase dbMock;
             @Mock(answer = RETURNS_MOCKS) private UserProvider userProvider;
             @Mock(extraInterfaces = {Queue.class, Observer.class}) private  articleMonitor;

             private ArticleManager manager;

             @Before public void setup() {
                 manager = new ArticleManager(userProvider, database, calculator, articleMonitor);
             }
         }

         public class SampleBaseTestCase {

             @Before public void initMocks() {
                 MockitoAnnotations.initMocks(this);
             }
         }

  `MockitoAnnotations.initMocks(this)` method has to be called to initialize annotated objects. In above example, `initMocks()` is called in @Before (JUnit4) method of test's base class. For JUnit3 `initMocks()` can go to `setup()` method of a base class. Instead you can also put initMocks() in your JUnit runner (@RunWith) or use the built-in `MockitoJUnitRunner`.

  See Also:
    `Mockito.mock(Class)`, `Spy`, `InjectMocks`, `MockitoAnnotations.initMocks(Object)`, `MockitoJUnitRunner`

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `Answers` | `answer`
    `java.lang.Class<?>[]` | `extraInterfaces`
    `java.lang.String` | `name`
    `boolean` | `serializable`

- - ### Element Detail

    - #### answer

          public abstract Answers answer

      Default:
        org.mockito.Answers.RETURNS_DEFAULTS

    - #### name

          public abstract java.lang.String name

      Default:
        ""

    - #### extraInterfaces

          public abstract java.lang.Class<?>[] extraInterfaces

      Default:
        {}

    - #### serializable

          public abstract boolean serializable

      Default:
        false