【问题标题】:How to disable Autowiring in Spring JUnit Tests?如何在 Spring JUnit 测试中禁用自动装配?
【发布时间】:2013-08-02 14:57:35
【问题描述】:

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

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

我嵌入在分析工具中的抽象测试类如下所示:

@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 时禁用 Autowiring-Components 的自动实例化?

【问题讨论】:

    标签: spring unit-testing testing junit4


    【解决方案1】:

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

    否则,您可以尝试使用 @Autowired(required=false) 对其进行注释,但我怀疑这会奏效。

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 2018-03-07
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2014-03-11
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多