Class MockitoExtension

  • All Implemented Interfaces:
    org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.Extension, org.junit.jupiter.api.extension.ParameterResolver

    public class MockitoExtension
    extends java.lang.Object
    implements org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.ParameterResolver
    Extension that initializes mocks and handles strict stubbings. This extension is the JUnit Jupiter equivalent of our JUnit4 MockitoJUnitRunner. Example usage:
    
     @ExtendWith(MockitoExtension.class)
     public class ExampleTest {
    
         @Mock
         private List<Integer> list;
    
         @Test
         public void shouldDoSomething() {
             list.add(100);
         }
     }
     
    If you would like to configure the used strictness for the test class, use MockitoSettings.
    
     @MockitoSettings(strictness = Strictness.STRICT_STUBS)
     public class ExampleTest {
    
         @Mock
         private List<Integer> list;
    
         @Test
         public void shouldDoSomething() {
             list.add(100);
         }
     }
     
    This extension also supports JUnit Jupiter's method parameters. Use parameters for initialization of mocks that you use only in that specific test method. In other words, where you would initialize local mocks in JUnit 4 by calling Mockito.mock(Class), use the method parameter. This is especially beneficial when initializing a mock with generics, as you no longer get a warning about "Unchecked assignment". Please refer to JUnit Jupiter's documentation to learn when method parameters are useful.
    
     @ExtendWith(MockitoExtension.class)
     public class ExampleTest {
    
         @Mock
         private List<Integer> sharedList;
    
         @Test
         public void shouldDoSomething() {
             sharedList.add(100);
         }
    
         @Test
         public void hasLocalMockInThisTest(@Mock List<Integer> localList) {
             localList.add(100);
             sharedList.add(100);
         }
     }
     
    Lastly, the extension supports JUnit Jupiter's constructor parameters. This allows you to do setup work in the constructor and set your fields to final. Please refer to JUnit Jupiter's documentation to learn when constructor parameters are useful.
    
     @ExtendWith(MockitoExtension.class)
     public class ExampleTest {
    
          private final List<Integer> sharedList;
    
          ExampleTest(@Mock sharedList) {
              this.sharedList = sharedList;
          }
    
          @Test
          public void shouldDoSomething() {
              sharedList.add(100);
          }
     }
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static org.junit.jupiter.api.extension.ExtensionContext.Namespace MOCKITO  
      private static java.lang.String MOCKS  
      private org.junit.jupiter.api.extension.ParameterResolver parameterResolver  
      private static java.lang.String SESSION  
      private Strictness strictness  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void afterEach​(org.junit.jupiter.api.extension.ExtensionContext context)
      Callback that is invoked after each test has been invoked.
      void beforeEach​(org.junit.jupiter.api.extension.ExtensionContext context)
      Callback that is invoked before each test is invoked.
      java.lang.Object resolveParameter​(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext context)  
      private java.util.Optional<MockitoSettings> retrieveAnnotationFromTestClasses​(org.junit.jupiter.api.extension.ExtensionContext context)  
      boolean supportsParameter​(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext context)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • MOCKITO

        private static final org.junit.jupiter.api.extension.ExtensionContext.Namespace MOCKITO
      • parameterResolver

        private final org.junit.jupiter.api.extension.ParameterResolver parameterResolver
    • Constructor Detail

      • MockitoExtension

        public MockitoExtension()
      • MockitoExtension

        private MockitoExtension​(Strictness strictness)
    • Method Detail

      • beforeEach

        public void beforeEach​(org.junit.jupiter.api.extension.ExtensionContext context)
        Callback that is invoked before each test is invoked.
        Specified by:
        beforeEach in interface org.junit.jupiter.api.extension.BeforeEachCallback
        Parameters:
        context - the current extension context; never null
      • retrieveAnnotationFromTestClasses

        private java.util.Optional<MockitoSettings> retrieveAnnotationFromTestClasses​(org.junit.jupiter.api.extension.ExtensionContext context)
      • afterEach

        public void afterEach​(org.junit.jupiter.api.extension.ExtensionContext context)
        Callback that is invoked after each test has been invoked.
        Specified by:
        afterEach in interface org.junit.jupiter.api.extension.AfterEachCallback
        Parameters:
        context - the current extension context; never null
      • supportsParameter

        public boolean supportsParameter​(org.junit.jupiter.api.extension.ParameterContext parameterContext,
                                         org.junit.jupiter.api.extension.ExtensionContext context)
                                  throws org.junit.jupiter.api.extension.ParameterResolutionException
        Specified by:
        supportsParameter in interface org.junit.jupiter.api.extension.ParameterResolver
        Throws:
        org.junit.jupiter.api.extension.ParameterResolutionException
      • resolveParameter

        public java.lang.Object resolveParameter​(org.junit.jupiter.api.extension.ParameterContext parameterContext,
                                                 org.junit.jupiter.api.extension.ExtensionContext context)
                                          throws org.junit.jupiter.api.extension.ParameterResolutionException
        Specified by:
        resolveParameter in interface org.junit.jupiter.api.extension.ParameterResolver
        Throws:
        org.junit.jupiter.api.extension.ParameterResolutionException