Spring JUnit: 如何在自动装配的组件中模拟自动装配的组件
Spring JUnit: 如何在自动装配的组件中模拟自动装配的组件
我想测试一个Spring组件,这个组件有一个被自动装配的属性,我需要在单元测试中改变它。问题是,这个类在post-construct方法中使用了自动装配的组件,所以在它实际使用之前我无法替换它(例如使用ReflectionTestUtils)。
我该怎么做呢?
我想测试的类是:
@Component public final class TestedClass{ @Autowired private Resource resource; @PostConstruct private void init(){ //我需要这里返回不同的结果 resource.getSomething(); } }
这是一个测试用例的基本结构:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations= "classpath:applicationContext.xml") public class TestedClassTest{ @Autowired private TestedClass instance; @Before private void setUp(){ //这里不起作用,因为它在bean实例化之后执行 ReflectionTestUtils.setField(instance, "resource", new Resource("something")); } }
有没有办法在调用postconstruct方法之前用其他东西替换resource?比如告诉Spring JUnit运行器自动注入不同的实例?