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 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<ApplicationContextInitializer<C>> initializers,
TestPropertyValues environmentProperties,
TestPropertyValues systemProperties,
ClassLoader classLoader,
ApplicationContext parent,
List<Configurations> configurations)
Create a new
AbstractApplicationContextRunner instance. |
| Modifier and Type | Method and Description |
|---|---|
protected abstract SELF |
newInstance(Supplier<C> contextFactory,
List<ApplicationContextInitializer<C>> initializers,
TestPropertyValues environmentProperties,
TestPropertyValues systemProperties,
ClassLoader classLoader,
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. |
SELF |
withConfiguration(Configurations configurations)
Register the specified configuration classes with the
ApplicationContext. |
SELF |
withInitializer(ApplicationContextInitializer<C> initializer)
Add a
ApplicationContextInitializer to be called when the context is
created. |
SELF |
withParent(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<ApplicationContextInitializer<C>> initializers, TestPropertyValues environmentProperties, TestPropertyValues systemProperties, ClassLoader classLoader, 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(ApplicationContextInitializer<C> 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.
Customizing the ClassLoader is an effective manner to hide resources from
the classpath.classLoader - the classloader to use (can be null to use the default)FilteredClassLoaderpublic SELF withParent(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<ApplicationContextInitializer<C>> initializers, TestPropertyValues environmentProperties, TestPropertyValues systemProperties, ClassLoader classLoader, 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 © 2018 Pivotal Software, Inc.. All rights reserved.