【发布时间】:2011-09-26 16:10:50
【问题描述】:
我有一个 maven spring 项目(最新版本),我想写一些 junit 测试(最新版本)。
我的问题是我的 spring bean 是自动装配的,当我从 junit 测试中调用它们时,我得到空指针异常,因为 spring 不会自动装配它们。
如何加载上下文以便自动装配?
【问题讨论】:
标签: java unit-testing spring junit
我有一个 maven spring 项目(最新版本),我想写一些 junit 测试(最新版本)。
我的问题是我的 spring bean 是自动装配的,当我从 junit 测试中调用它们时,我得到空指针异常,因为 spring 不会自动装配它们。
如何加载上下文以便自动装配?
【问题讨论】:
标签: java unit-testing spring junit
您是否学习过 Spring 参考文档中的 Testing 章节?这是您应该从以下示例开始:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {
@Resource
private FooService fooService;
// class body...
}
如果您在/src/test/java 中的com.example.MyTest,您将需要/src/test/resources/com/example/MyTest-context.xml - 但例外情况会告诉您方法。
【讨论】:
这是一种可能:
@RunWith(SpringJUnit4ClassRunner.class)
// ApplicationContext will be loaded from "/applicationContext.xml"
// in the root of the classpath
@ContextConfiguration({"/applicationContext.xml"})
public class MyTest {
// class body...
}
通常,为您的测试基础架构设置一个 test-applicationContext 是个好主意。
【讨论】:
您应该在您的测试类上使用SpringJUnit4ClassRunner,并在您的测试类中包含该bean 的字段上使用@Resource(或@Autowired)。您应该考虑使用使用存根的特殊测试上下文 Spring 配置,以便您的测试是真正的单元测试,并且不依赖于整个应用程序上下文。
【讨论】: