@Autowired与JUnit测试

我已经使用过JUnit,但是某些测试存在一些问题,这些测试在Spring bean内具有@Autowired批注,当我引用它们时,@

Autowired的bean始终为NULL。

这是示例代码:

     public class Test {

protected ApplicationContext ac;

@Before

public void setUp() {

ac = new FileSystemXmlApplicationContext("classpath:config/applicationContext.xml"

"classpath:config/test-datasources.xml");

}

@Test

public void testRun() throws Exception {

IManager manager = (IManager)this.ac.getBean("manager");

manager.doSomething();

}

}

@Service

public class Manager implements IManager {

public boolean doSomething() throws Exception {

ParametersJCSCache parametersJCSCache = new ParametersJCSCache();

String paramValue = parametersJCSCache.getParameter("XPTO");

...

}

}

public class ParametersJCSCache extends SpringBeanAutowiringSupport {

@Autowired

private IParameterManager parameterManager; //THIS IS NULL

}

当调用Manager对象时,Spring会生成代理,但是当访问@Autowired

parameterManager时,该对象为null,并且由于这个问题,我无法测试此方法。

知道是什么原因造成的吗?为什么没有注入物体?它在Web应用程序的上下文中运行良好,但在测试上下文中始终为NULL。

回答:

我终于找到了解决我问题的方法。查找这篇文章SpringBeanAutowiringSupport不会在jUnit测试中注入bean,而是执行JUnit测试工作。

以上是 @Autowired与JUnit测试 的全部内容, 来源链接: utcz.com/qa/413890.html

回到顶部