我们在 Java 项目中使用 Spring Framework(XML 版本)4.0.5.RELAESE。 在我们的应用程序中,context.xml 在应用程序启动时实例化,并通过依赖注入(inject)提供每个属性。
现在我想知道在测试环境中在哪里实例化它的最佳(和常用)策略是什么。 (我们有一些单元、集成和系统测试,他们至少需要 context.xml 中提供的 databaseBaseConnector bean,)
我想过创建一个抽象类,每个测试都从中扩展,但在这种情况下,它会在每次测试之前重新实例化。我想要一个类似于主应用程序的解决方案,其中上下文只实例化一次,其他所有需要的东西都通过依赖注入(inject)设置。
研究这个主题并没有太大帮助,所以我决定提出这个问题。
最佳答案
Spring 带有一个 SpringJUnit4ClassRunner
和一个 @ContextConfiguration
-annotation。如果您使用它们,那么 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);
}
}
关于java - 在测试环境中实例化 context.xml 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847729/