/*
* Copyright (c) 2006 Rogério Liesenfeld
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
/**
* Provides the classes and annotations used when writing tests with the JMockit APIs.
* <p/>
* The {@linkplain mockit.Tested @Tested} annotation allows for the instantiation of classes under test, with the
* injection and/or recursive instantiation of dependencies.
* It can inject mocked instances when used in combination with the {@linkplain mockit.Injectable @Injectable} mocking
* annotation, and also inject <em>non-mocked</em> (real) instances when applied as
* {@code @Tested(fullyInitialized = true)}.
* Non-mocked instances are either automatically created or obtained from other {@code @Tested} fields.
* <p/>
* The {@link mockit.Expectations} class provides an API for the <em>record-replay</em> model of recording expected
* invocations which are later replayed and implicitly verified.
* This API makes use of the {@linkplain mockit.Mocked @Mocked}, {@linkplain mockit.Injectable @Injectable}, and
* {@linkplain mockit.Capturing @Capturing} <em>mocking</em> annotations.
* The {@link mockit.Verifications} class extends the record-replay model to a <em>record-replay-verify</em> model,
* where expectations that were not recorded can be verified explicitly <em>after</em> exercising the code under test
* (ie, after the replay phase).
* The {@link mockit.Invocation} class and the {@link mockit.Delegate} interface are also part of this API; they can be
* used for recording expectations with custom results, and for the implementation of custom argument matchers.
* <p/>
* {@linkplain mockit.MockUp <code>MockUp<T></code>} is a generic base class (where {@code T} is the type to be
* faked) which allows the definition of fake implementations for external classes or interfaces.
* Methods in a mock-up subclass that take the place of the "real" methods in class {@code T} are indicated with the
* {@linkplain mockit.Mock @Mock} annotation.
* Such methods can also (optionally) have an {@link mockit.Invocation} parameter.
* <p/>
* Finally, the {@link mockit.Deencapsulation} class provides several Reflection-based utility methods, for the
* occasional cases where a {@code private} field needs to be accessed, etc.
* <p/>
* For a description with examples of the <em>Expectations</em> API, see the
* "<a href="http://jmockit.org/tutorial/Mocking.html">Mocking</a>" chapter in the Tutorial.
* For the <em>Mockups</em> API, see the "<a href="http://jmockit.org/tutorial/Faking.html">Faking</a>" chapter.
*/
package mockit;