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 and Type | Class and Description | 
|---|---|
| protected static class  | AbstractApplicationContextRunner.BeanRegistration<T>A Bean registration to be applied when the context loaded. | 
| protected static class  | AbstractApplicationContextRunner.RunnerConfiguration<C extends ConfigurableApplicationContext> | 
| Modifier and Type | Method and Description | 
|---|---|
| protected abstract SELF | newInstance(Supplier<C> contextFactory,
           boolean allowBeanDefinitionOverriding,
           List<ApplicationContextInitializer<? super C>> initializers,
           TestPropertyValues environmentProperties,
           TestPropertyValues systemProperties,
           ClassLoader classLoader,
           ApplicationContext parent,
           List<AbstractApplicationContextRunner.BeanRegistration<?>> beanRegistrations,
           List<Configurations> configurations)Deprecated.  | 
| SELF | run(ContextConsumer<? super A> consumer)Create and refresh a new  ApplicationContextbased on the current state of
 this loader. | 
| SELF | with(Function<SELF,SELF> customizer)Apply customization to this runner. | 
| SELF | withAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding)Specify if bean definition overriding, by registering a definition with the same
 name as an existing definition, should be allowed. | 
| SELF | withAllowCircularReferences(boolean allowCircularReferences)Specify if circular references between beans should be allowed. | 
| <T> SELF | withBean(Class<T> type,
        Object... constructorArgs)Register the specified user bean with the  ApplicationContext. | 
| <T> SELF | withBean(Class<T> type,
        Supplier<T> supplier,
        BeanDefinitionCustomizer... customizers)Register the specified user bean with the  ApplicationContext. | 
| <T> SELF | withBean(String name,
        Class<T> type,
        Object... constructorArgs)Register the specified user bean with the  ApplicationContext. | 
| <T> SELF | withBean(String name,
        Class<T> type,
        Supplier<T> supplier,
        BeanDefinitionCustomizer... customizers)Register the specified user bean with the  ApplicationContext. | 
| SELF | withClassLoader(ClassLoader classLoader)Customize the  ClassLoaderthat theApplicationContextshould use
 for resource loading and bean class loading. | 
| SELF | withConfiguration(Configurations configurations)Register the specified configuration classes with the  ApplicationContext. | 
| SELF | withInitializer(ApplicationContextInitializer<? super C> initializer)Add an  ApplicationContextInitializerto be called when the context is
 created. | 
| SELF | withParent(ApplicationContext parent)Configure the  parentof theApplicationContext. | 
| SELF | withPropertyValues(String... pairs)Add the specified  Environmentproperty pairs. | 
| SELF | withSystemProperties(String... pairs)Add the specified  Systemproperty pairs. | 
| SELF | withUserConfiguration(Class<?>... configurationClasses)Register the specified user configuration classes with the
  ApplicationContext. | 
@Deprecated protected AbstractApplicationContextRunner(Supplier<C> contextFactory)
AbstractApplicationContextRunner(Supplier, Function)AbstractApplicationContextRunner instance.contextFactory - the factory used to create the actual contextprotected AbstractApplicationContextRunner(Supplier<C> contextFactory, Function<AbstractApplicationContextRunner.RunnerConfiguration<C>,SELF> instanceFactory)
AbstractApplicationContextRunner instance.contextFactory - the factory used to create the actual contextinstanceFactory - the factory used to create new instance of the runnerprotected AbstractApplicationContextRunner(AbstractApplicationContextRunner.RunnerConfiguration<C> configuration, Function<AbstractApplicationContextRunner.RunnerConfiguration<C>,SELF> instanceFactory)
AbstractApplicationContextRunner instance.configuration - the configuration for the runner to useinstanceFactory - the factory used to create new instance of the runner@Deprecated protected AbstractApplicationContextRunner(Supplier<C> contextFactory, boolean allowBeanDefinitionOverriding, List<ApplicationContextInitializer<? super C>> initializers, TestPropertyValues environmentProperties, TestPropertyValues systemProperties, ClassLoader classLoader, ApplicationContext parent, List<AbstractApplicationContextRunner.BeanRegistration<?>> beanRegistrations, List<Configurations> configurations)
AbstractApplicationContextRunner(Supplier, Function)AbstractApplicationContextRunner instance.contextFactory - the factory used to create the actual contextallowBeanDefinitionOverriding - whether bean definition overriding is allowedinitializers - the initializersenvironmentProperties - the environment propertiessystemProperties - the system propertiesclassLoader - the class loaderparent - the parentbeanRegistrations - the bean registrationsconfigurations - the configurationpublic SELF withAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding)
allowBeanDefinitionOverriding - if bean overriding is allowedDefaultListableBeanFactory.setAllowBeanDefinitionOverriding(boolean)public SELF withAllowCircularReferences(boolean allowCircularReferences)
allowCircularReferences - if circular references between beans are allowedAbstractAutowireCapableBeanFactory.setAllowCircularReferences(boolean)public SELF withInitializer(ApplicationContextInitializer<? super 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
 for resource loading and bean class loading.classLoader - the classloader to use (can be null to use the default)FilteredClassLoaderpublic SELF withParent(ApplicationContext parent)
parent of the ApplicationContext.parent - the parentpublic <T> SELF withBean(Class<T> type, Object... constructorArgs)
ApplicationContext. The bean name
 is generated from the configured BeanNameGenerator on the underlying
 context.
 Such beans are registered after regular user configurations in the order of registration.
T - the type of the beantype - the type of the beanconstructorArgs - custom argument values to be fed into Spring's constructor
 resolution algorithm, resolving either all arguments or just specific ones, with
 the rest to be resolved through regular autowiring (may be null or empty)public <T> SELF withBean(String name, Class<T> type, Object... constructorArgs)
ApplicationContext.
 Such beans are registered after regular user configurations in the order of registration.
T - the type of the beanname - the bean name or null to use a generated nametype - the type of the beanconstructorArgs - custom argument values to be fed into Spring's constructor
 resolution algorithm, resolving either all arguments or just specific ones, with
 the rest to be resolved through regular autowiring (may be null or empty)public <T> SELF withBean(Class<T> type, Supplier<T> supplier, BeanDefinitionCustomizer... customizers)
ApplicationContext. The bean name
 is generated from the configured BeanNameGenerator on the underlying
 context.
 Such beans are registered after regular user configurations in the order of registration.
T - the type of the beantype - the type of the beansupplier - a supplier for the beancustomizers - one or more callbacks for customizing the factory's
 BeanDefinition, e.g. setting a lazy-init or primary flagpublic <T> SELF withBean(String name, Class<T> type, Supplier<T> supplier, BeanDefinitionCustomizer... customizers)
ApplicationContext. The bean name
 is generated from the configured BeanNameGenerator on the underlying
 context.
 Such beans are registered after regular user configurations in the order of registration.
T - the type of the beanname - the bean name or null to use a generated nametype - the type of the beansupplier - a supplier for the beancustomizers - one or more callbacks for customizing the factory's
 BeanDefinition, e.g. setting a lazy-init or primary flagpublic 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 call@Deprecated protected abstract SELF newInstance(Supplier<C> contextFactory, boolean allowBeanDefinitionOverriding, List<ApplicationContextInitializer<? super C>> initializers, TestPropertyValues environmentProperties, TestPropertyValues systemProperties, ClassLoader classLoader, ApplicationContext parent, List<AbstractApplicationContextRunner.BeanRegistration<?>> beanRegistrations, 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 ApplicationContext