gpt4 book ai didi

spring - 如何在 Spring JUnit 测试中禁用 Autowiring ?

转载 作者:行者123 更新时间:2023-11-28 20:56:06 25 4
gpt4 key购买 nike

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

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

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

@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 测试时是否可以禁用 Autowiring 组件的自动实例化?

最佳答案

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

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

关于spring - 如何在 Spring JUnit 测试中禁用 Autowiring ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18020070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com