public class SpringExtension extends Object implements BeforeAllCallback, AfterAllCallback, TestInstancePostProcessor, BeforeEachCallback, AfterEachCallback, BeforeTestExecutionCallback, AfterTestExecutionCallback, ParameterResolver
SpringExtension
integrates the Spring TestContext Framework
into JUnit 5's Jupiter programming model.
To use this extension, simply annotate a JUnit Jupiter based test class with
@ExtendWith(SpringExtension.class)
, @SpringJUnitConfig
, or
@SpringJUnitWebConfig
.
EnabledIf
,
DisabledIf
,
SpringJUnitConfig
,
SpringJUnitWebConfig
,
TestContextManager
Constructor and Description |
---|
SpringExtension() |
public void beforeAll(ExtensionContext context) throws Exception
TestContextManager.beforeTestClass()
.beforeAll
in interface BeforeAllCallback
Exception
public void afterAll(ExtensionContext context) throws Exception
TestContextManager.afterTestClass()
.afterAll
in interface AfterAllCallback
Exception
public void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception
TestContextManager.prepareTestInstance(java.lang.Object)
.postProcessTestInstance
in interface TestInstancePostProcessor
Exception
public void beforeEach(ExtensionContext context) throws Exception
beforeEach
in interface BeforeEachCallback
Exception
public void beforeTestExecution(ExtensionContext context) throws Exception
beforeTestExecution
in interface BeforeTestExecutionCallback
Exception
public void afterTestExecution(ExtensionContext context) throws Exception
TestContextManager.afterTestExecution(java.lang.Object, java.lang.reflect.Method, java.lang.Throwable)
.afterTestExecution
in interface AfterTestExecutionCallback
Exception
public void afterEach(ExtensionContext context) throws Exception
TestContextManager.afterTestMethod(java.lang.Object, java.lang.reflect.Method, java.lang.Throwable)
.afterEach
in interface AfterEachCallback
Exception
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
Parameter
in the supplied ParameterContext
should be autowired from the test's ApplicationContext
.
Returns true
if the parameter is declared in a Constructor
that is annotated with @Autowired
and otherwise delegates to
ParameterAutowireUtils.isAutowirable(java.lang.reflect.Parameter, int)
.
WARNING: If the parameter is declared in a Constructor
that is annotated with @Autowired
, Spring will assume the responsibility
for resolving all parameters in the constructor. Consequently, no other registered
ParameterResolver
will be able to resolve parameters.
supportsParameter
in interface ParameterResolver
resolveParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext)
,
ParameterAutowireUtils.isAutowirable(java.lang.reflect.Parameter, int)
@Nullable public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
Parameter
in the supplied ParameterContext
by
retrieving the corresponding dependency from the test's ApplicationContext
.
Delegates to ParameterAutowireUtils.resolveDependency(java.lang.reflect.Parameter, int, java.lang.Class<?>, org.springframework.context.ApplicationContext)
.
resolveParameter
in interface ParameterResolver
supportsParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext)
,
ParameterAutowireUtils.resolveDependency(java.lang.reflect.Parameter, int, java.lang.Class<?>, org.springframework.context.ApplicationContext)
public static ApplicationContext getApplicationContext(ExtensionContext context)
ApplicationContext
associated with the supplied ExtensionContext
.context
- the current ExtensionContext
(never null
)IllegalStateException
- if an error occurs while retrieving the application contextTestContext.getApplicationContext()