java.lang.Object
org.mockito.junit.jupiter.MockitoExtension
- All Implemented Interfaces:
AfterEachCallback,BeforeEachCallback,Extension,ParameterResolver,TestInstantiationAwareExtension
public class MockitoExtension
extends Object
implements BeforeEachCallback, AfterEachCallback, 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);
}
}
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension
TestInstantiationAwareExtension.ExtensionContextScope -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidafterEach(ExtensionContext context) Callback that is invoked after each test has been invoked.voidbeforeEach(ExtensionContext context) Callback that is invoked before each test is invoked.resolveParameter(ParameterContext parameterContext, ExtensionContext context) booleansupportsParameter(ParameterContext parameterContext, ExtensionContext context) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension
getTestInstantiationExtensionContextScope
-
Constructor Details
-
MockitoExtension
public MockitoExtension()
-
-
Method Details
-
beforeEach
Callback that is invoked before each test is invoked.- Specified by:
beforeEachin interfaceBeforeEachCallback- Parameters:
context- the current extension context; nevernull
-
afterEach
Callback that is invoked after each test has been invoked.- Specified by:
afterEachin interfaceAfterEachCallback- Parameters:
context- the current extension context; nevernull
-
supportsParameter
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext context) throws ParameterResolutionException - Specified by:
supportsParameterin interfaceParameterResolver- Throws:
ParameterResolutionException
-
resolveParameter
public Object resolveParameter(ParameterContext parameterContext, ExtensionContext context) throws ParameterResolutionException - Specified by:
resolveParameterin interfaceParameterResolver- Throws:
ParameterResolutionException
-