package org.mockito.quality; import org.mockito.Incubating; import org.mockito.MockitoSession; import org.mockito.exceptions.misusing.PotentialStubbingProblem; import org.mockito.exceptions.misusing.UnnecessaryStubbingException; import org.mockito.internal.junit.JUnitRule; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoRule; /** * Configures the "strictness" of Mockito during a mocking session. * A session typically maps to a single test method invocation. * {@code Strictness} drives cleaner tests and better productivity. * The easiest way to leverage enhanced {@code Strictness} is using * Mockito's JUnit support ({@link MockitoRule} or {@link MockitoJUnitRunner}). * If you cannot use JUnit support {@link MockitoSession} is the way to go. *

* How strictness level influences the behavior of the test (mocking session)? *

    *
  1. {@link Strictness#LENIENT} - no added behavior. * The default of Mockito 1.x. * Recommended only if you cannot use {@link #STRICT_STUBS} nor {@link #WARN}.
  2. *
  3. {@link Strictness#WARN} - helps keeping tests clean and improves debuggability. * Reports console warnings about unused stubs * and stubbing argument mismatch (see {@link org.mockito.quality.MockitoHint}). * The default behavior of Mockito 2.x when {@link JUnitRule} or {@link MockitoJUnitRunner} are used.
  4. * Recommended if you cannot use {@link #STRICT_STUBS}. *
  5. {@link Strictness#STRICT_STUBS} - ensures clean tests, reduces test code duplication, improves debuggability. * Best combination of flexibility and productivity. Highly recommended. * Planned as default for Mockito v3. * See {@link #STRICT_STUBS} for the details. *
* * @since 2.3.0 */ @Incubating public enum Strictness { /** * No extra strictness. Mockito 1.x behavior. * Recommended only if you cannot use {@link #STRICT_STUBS} nor {@link #WARN}. *

* For more information see {@link Strictness}. * * @since 2.3.0 */ @Incubating LENIENT, /** * Helps keeping tests clean and improves debuggability. * Extra warnings emitted to the console, see {@link MockitoHint}. * Default Mockito 2.x behavior. * Recommended if you cannot use {@link #STRICT_STUBS}. *

* For more information see {@link Strictness}. * * @since 2.3.0 */ @Incubating WARN, /** * Ensures clean tests, reduces test code duplication, improves debuggability. * Offers best combination of flexibility and productivity. * Highly recommended. * Planned as default for Mockito v3. *

* Adds following behavior: *

* * For more information see {@link Strictness}. * * @since 2.3.0 */ @Incubating STRICT_STUBS; }