package com.github.signed.sandboxes.spring.testing; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.GenericBeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @SuppressWarnings("ALL") @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @Ignore public class ClassUnderTestTest { @Configuration @ComponentScan(basePackageClasses = {ClassUnderTest.class}, resourcePattern = "ClassUnderTest.class") static class Config { @Bean public static StubsForEveryone stubsForEveryone(){ return new StubsForEveryone(); } } public static class StubsForEveryone implements BeanFactoryPostProcessor{ @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { for (String s : beanFactory.getBeanDefinitionNames()) { BeanDefinition beanDefinition = beanFactory.getBeanDefinition(s); System.out.println(s); } BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory; GenericBeanDefinition genericBeanDefinition = new GenericBeanDefinition(); genericBeanDefinition.setBeanClass(DependencyNotInApplicationContext.class); //registry.registerBeanDefinition("goaway", genericBeanDefinition); } } @Autowired ClassUnderTest classUnderTest; @Test public void name() throws Exception { assertThat(classUnderTest.fetchInt(), is(7)); } }