| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito;
|
|
|
| import java.lang.annotation.Documented;
|
| import java.lang.annotation.Retention;
|
| import java.lang.annotation.Target;
|
|
|
| import static java.lang.annotation.ElementType.FIELD;
|
| import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|
|
| /**
|
| * Mark a field as a mock.
|
| *
|
| * <ul>
|
| * <li>Allows shorthand mock creation.</li>
|
| * <li>Minimizes repetitive mock creation code.</li>
|
| * <li>Makes the test class more readable.</li>
|
| * <li>Makes the verification error easier to read because the <b>field name</b> is used to identify the mock.</li>
|
| * </ul>
|
| *
|
| * <pre class="code"><code class="java">
|
| * 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);
|
| * }
|
| * }
|
| * </code></pre>
|
| *
|
| * <p>
|
| * <strong><code>MockitoAnnotations.initMocks(this)</code></strong> method has to be called to initialize annotated objects.
|
| * In above example, <code>initMocks()</code> is called in @Before (JUnit4) method of test's base class.
|
| * For JUnit3 <code>initMocks()</code> can go to <code>setup()</code> method of a base class.
|
| * <strong>Instead</strong> you can also put initMocks() in your JUnit runner (@RunWith) or use the built-in
|
| * {@link org.mockito.runners.MockitoJUnitRunner}.
|
| * </p>
|
| *
|
| * @see Mockito#mock(Class)
|
| * @see Spy
|
| * @see InjectMocks
|
| * @see MockitoAnnotations#initMocks(Object)
|
| * @see org.mockito.runners.MockitoJUnitRunner
|
| */
|
| @Target(FIELD)
|
| @Retention(RUNTIME)
|
| @Documented
|
| public @interface Mock {
|
|
|
| Answers answer() default Answers.RETURNS_DEFAULTS;
|
|
|
| String name() default "";
|
|
|
| Class<?>[] extraInterfaces() default {}; |
| |
| boolean serializable() default false;
|
| }
|