- 
                Notifications
    
You must be signed in to change notification settings  - Fork 38.8k
 
Closed
Labels
Milestone
Description
Consider the following scenario:
@SpringJunitConfig
public class MyTest {
  @MockitoBean
  private ExampleService service;
}With zero ExampleService in the context. MockitoBean has a REPLACE_OR_CREATE_DEFINITION strategy, which means it should create a (mock) bean for that type if none is found.
Right now it fails as:
Caused by: java.lang.IllegalStateException: Unable to select a bean definition to override: found 0 bean definitions of type org.springframework.test.context.bean.override.example.ExampleService (as required by annotated field 'ZeroCandidatesTestCase.example')
	at org.springframework.test.context.bean.override.BeanOverrideBeanFactoryPostProcessor.registerReplaceDefinition(BeanOverrideBeanFactoryPostProcessor.java:143) ~[main/:?]
	at org.springframework.test.context.bean.override.BeanOverrideBeanFactoryPostProcessor.registerBeanOverride(BeanOverrideBeanFactoryPostProcessor.java:123) ~[main/:?]
	at org.springframework.test.context.bean.override.BeanOverrideBeanFactoryPostProcessor.postProcessWithRegistry(BeanOverrideBeanFactoryPostProcessor.java:99) ~[main/:?]
	at org.springframework.test.context.bean.override.BeanOverrideBeanFactoryPostProcessor.postProcessBeanFactory(BeanOverrideBeanFactoryPostProcessor.java:89) ~[main/:?]
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:363) ~[main/:?]
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:197) ~[main/:?]
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:790) ~[main/:?]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608) ~[main/:?]
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:221) ~[main/:?]
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:110) ~[main/:?]
	at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:212) ~[main/:?]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) ~[main/:?]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ~[main/:?]
	... 72 more
There's even an integration test to assert the (faulty) scenario.