在测试环境中实例化context.xml的位置

时间:2014-05-24 17:16:00

标签: java spring unit-testing testing

我们在Java项目中使用Spring Framework(XML Version)4.0.5.RELAESE。 在我们的应用程序中,context.xml在应用程序启动开始时实例化,并通过依赖注入提供每个属性。

现在我想知道在测试环境中实例化它的最佳(和常用)策略是什么。 (我们有一些单元,集成和系统测试,他们至少需要context.xml中提供的databaseBaseConnector bean),

我考虑过制作一个每个测试扩展的抽象类,但在这种情况下,它会在每次测试之前重新实例化。我想有一个类似于主应用程序的解决方案,其中上下文仅实例化一次,其他所需的一切都是通过依赖注入设置的。

研究这个主题还没有多大帮助,所以我决定提问。

1 个答案:

答案 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);
    }
}