我正在使用JUnit进行一些集成测试。我有一个xml文件,我在其中声明了一些我要注入的模板实体。在每次测试中,我都需要一个全新的应用程序上下文,即没有测试应该依赖于/与其他测试结合,所以在setUp()
我需要在默认的起始值上“重新初始化”这些实体。
我可以通过重新加载来实现它,但这样我就无法使用@Autowired
注释。
@Before
public void setUp(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:entityTemplates-Context.xml");
homeA = (Home)ctx.getBean("homeA");
}
有没有办法做到这一点,仍然对这些实体使用@Autowired
?
答案 0 :(得分:2)
您是否看过Spring对集成测试的支持?
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html
我的团队将此用于我们需要Spring容器的集成测试。每次测试都会获得一个新的上下文,但这会大大减慢测试速度。
答案 1 :(得分:0)
你也可以像这样手动完成:
...
@Autowired
HomeA homeA;
@Before
public void setUp() {
// configures this test instance as a regular spring bean
ctx.getAutowireCapableBeanFactory().autowireBean(this);
// here homeA is available
}
...