SELF - the "self" type for this runnerC - the context typeA - the application context assertion providerpublic abstract class AbstractApplicationContextRunner<SELF extends AbstractApplicationContextRunner<SELF,C,A>,C extends org.springframework.context.ConfigurableApplicationContext,A extends ApplicationContextAssertProvider<C>> extends Object
ApplicationContext and provide AssertJ style
assertions. The test is best used as a field of a test class, describing the shared
configuration required for the test:
public class MyContextTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withPropertyValues("spring.foo=bar")
.withUserConfiguration(MyConfiguration.class);
}
The initialization above makes sure to register MyConfiguration for all tests
and set the spring.foo property to bar unless specified otherwise.
Based on the configuration above, a specific test can simulate what will happen when the context runs, perhaps with overridden property values:
@Test
public someTest() {
this.contextRunner.withPropertyValues("spring.foo=biz").run((context) -> {
assertThat(context).containsSingleBean(MyBean.class);
// other assertions
});
}
The test above has changed the spring.foo property to biz and is
asserting that the context contains a single MyBean bean. The
run method takes a ContextConsumer that can apply
assertions to the context. Upon completion, the context is automatically closed.
If the application context fails to start the #run(ContextConsumer) method is
called with a "failed" application context. Calls to the context will throw an
IllegalStateException and assertions that expect a running context will fail.
The getFailure() assertion can be used if
further checks are required on the cause of the failure:
@Test
public someTest() {
this.context.withPropertyValues("spring.foo=fails").run((loaded) -> {
assertThat(loaded).getFailure().hasCauseInstanceOf(BadPropertyException.class);
// other assertions
});
}
ApplicationContextRunner,
WebApplicationContextRunner,
ReactiveWebApplicationContextRunner,
ApplicationContextAssert| Modifier | Constructor and Description |
|---|---|
protected |
AbstractApplicationContextRunner(Supplier<C> contextFactory)
Create a new
AbstractApplicationContextRunner instance. |
protected |
AbstractApplicationContextRunner(Supplier<C> contextFactory,
List<org.springframework.context.ApplicationContextInitializer<? super C>> initializers,
TestPropertyValues environmentProperties,
TestPropertyValues systemProperties,
ClassLoader classLoader,
org.springframework.context.ApplicationContext parent,
List<Configurations> configurations)
Create a new
AbstractApplicationContextRunner instance. |
| Modifier and Type | Method and Description |
|---|---|
protected abstract SELF |
newInstance(Supplier<C> contextFactory,
List<org.springframework.context.ApplicationContextInitializer<? super C>> initializers,
TestPropertyValues environmentProperties,
TestPropertyValues systemProperties,
ClassLoader classLoader,
org.springframework.context.ApplicationContext parent,
List<Configurations> configurations) |
SELF |
run(ContextConsumer<? super A> consumer)
Create and refresh a new
ApplicationContext based on the current state of
this loader. |
SELF |
with(Function<SELF,SELF> customizer)
Apply customization to this runner.
|
SELF |
withClassLoader(ClassLoader classLoader)
Customize the
ClassLoader that the ApplicationContext should use
for resource loading and bean class loading. |
SELF |
withConfiguration(Configurations configurations)
Register the specified configuration classes with the
ApplicationContext. |
SELF |
withInitializer(org.springframework.context.ApplicationContextInitializer<? super org.springframework.context.ConfigurableApplicationContext> initializer)
Add a
ApplicationContextInitializer to be called when the context is
created. |
SELF |
withParent(org.springframework.context.ApplicationContext parent)
Configure the
parent of the ApplicationContext. |
SELF |
withPropertyValues(String... pairs)
Add the specified
Environment property pairs. |
SELF |
withSystemProperties(String... pairs)
Add the specified
System property pairs. |
SELF |
withUserConfiguration(Class<?>... configurationClasses)
Register the specified user configuration classes with the
ApplicationContext. |
protected AbstractApplicationContextRunner(Supplier<C> contextFactory)
AbstractApplicationContextRunner instance.contextFactory - the factory used to create the actual contextprotected AbstractApplicationContextRunner(Supplier<C> contextFactory, List<org.springframework.context.ApplicationContextInitializer<? super C>> initializers, TestPropertyValues environmentProperties, TestPropertyValues systemProperties, ClassLoader classLoader, org.springframework.context.ApplicationContext parent, List<Configurations> configurations)
AbstractApplicationContextRunner instance.contextFactory - the factory used to create the actual contextinitializers - the initializersenvironmentProperties - the environment propertiessystemProperties - the system propertiesclassLoader - the class loaderparent - the parentconfigurations - the configurationpublic SELF withInitializer(org.springframework.context.ApplicationContextInitializer<? super org.springframework.context.ConfigurableApplicationContext> initializer)
ApplicationContextInitializer to be called when the context is
created.initializer - the initializer to addpublic SELF withPropertyValues(String... pairs)
Environment property pairs. Key-value pairs can be
specified with colon (":") or equals ("=") separators. Override matching keys that
might have been specified previously.pairs - the key-value pairs for properties that need to be added to the
environmentTestPropertyValues,
withSystemProperties(String...)public SELF withSystemProperties(String... pairs)
System property pairs. Key-value pairs can be specified
with colon (":") or equals ("=") separators. System properties are added before the
context is run and restored when the context is
closed.pairs - the key-value pairs for properties that need to be added to the systemTestPropertyValues,
withSystemProperties(String...)public SELF withClassLoader(ClassLoader classLoader)
ClassLoader that the ApplicationContext should use
for resource loading and bean class loading.classLoader - the classloader to use (can be null to use the default)FilteredClassLoaderpublic SELF withParent(org.springframework.context.ApplicationContext parent)
parent of the ApplicationContext.parent - the parentpublic SELF withUserConfiguration(Class<?>... configurationClasses)
ApplicationContext.configurationClasses - the user configuration classes to addpublic SELF withConfiguration(Configurations configurations)
ApplicationContext.configurations - the configurations to addpublic SELF with(Function<SELF,SELF> customizer)
customizer - the customizer to callprotected abstract SELF newInstance(Supplier<C> contextFactory, List<org.springframework.context.ApplicationContextInitializer<? super C>> initializers, TestPropertyValues environmentProperties, TestPropertyValues systemProperties, ClassLoader classLoader, org.springframework.context.ApplicationContext parent, List<Configurations> configurations)
public SELF run(ContextConsumer<? super A> consumer)
ApplicationContext based on the current state of
this loader. The context is consumed by the specified consumer and closed
upon completion.consumer - the consumer of the created ApplicationContextCopyright © 2019 Pivotal Software, Inc.. All rights reserved.