我们在Java项目中使用Spring Framework(XML Version)4.0.5.RELAESE。 在我们的应用程序中,context.xml在应用程序启动开始时实例化,并通过依赖注入提供每个属性。
现在我想知道在测试环境中实例化它的最佳(和常用)策略是什么。 (我们有一些单元,集成和系统测试,他们至少需要context.xml中提供的databaseBaseConnector bean),
我考虑过制作一个每个测试扩展的抽象类,但在这种情况下,它会在每次测试之前重新实例化。我想有一个类似于主应用程序的解决方案,其中上下文仅实例化一次,其他所需的一切都是通过依赖注入设置的。
研究这个主题还没有多大帮助,所以我决定提问。
答案 0 :(得分:1)
Spring带有SpringJUnit4ClassRunner
和@ContextConfiguration
注释。如果你使用它们,那么spring将在不同的测试中重用相同的Spring Context。
所以Spring测试类看起来像这样:
package com.queomedia;
import javax.annotation.Resource;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
//@Transactional
@ContextConfiguration(SpringTestContext.APPLICATION)
public class SpringContextTest {
@Autowire
private ApplicationContext applicationContext;
//Test that the spring context can been loaded
@Test
public void testSpringContextLoad() {
Assert.assertNotNull("application context expected", this.applicationContext);
}
}