如何在Spring JUnit测试中禁用自动装配?

时间:2013-08-02 14:57:36

标签: spring unit-testing testing junit4

我目前正在研究一种分析Spring应用程序的ApplicationContexts的工具。为了开始分析,我实现了一个抽象的JUnit-Test类,它必须由目标应用程序中的具体实例进行扩展。这使得为​​更多上下文文件编写自己的测试变得非常容易,我的工具也可以使用上下文加载功能。

对我来说,问题是基于Spring的JUnit-Tests会自动启用自动装配,即使在目标上下文中未启用它也是如此。但我需要保持不变的背景,以确保分析结果的正确性。

我在分析工具中嵌入的抽象Test-Class如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
public abstract class AbstractContextLoader implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @Test
    public void analyseContext() {
        SpringContextAnalysis.startApplication(applicationContext);
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}

具体实现可能如下所示:

@ContextConfiguration(locations="context.xml")
public class ContextAnalysis extends AbstractContextLoader {
}

是否可以在使用基于Spring的JUnit-Tests时禁用自动装配组件的自动实例化?

1 个答案:

答案 0 :(得分:0)

也许您应该尝试将其存储在Object中并在需要时进行投射?您需要对setter方法的参数执行相同的操作。

否则你可以尝试使用@Autowired(required=false)进行注释,但我怀疑这会起作用。