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

标签 java spring unit-testing testing

我们在 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/

相关文章:

java - 如何在 Hibernate 5 中从 xml 创建表?

java - 访问 Spring WebDataBinder 的 BindingResult 而不放入参数列表

java - 如何在 Java 代码中传递通用枚举键

django - 功能测试=集成测试?在django中

java - 使用 Spring Data JPA 通过 @OneToMany 关系属性对实体进行排序

java - eureka服务器中fetchRegistry属性有什么用?

java - 如何防止通过 AutoClose InputStream 关​​闭 InputStream

java - 如何访问 @Configuration 或 @SpringBootApplication 类中的 ServletContext

sharepoint - 在 SharePoint 中对事件处理程序进行单元测试?

unit-testing - 重写构造函数中调用的方法时,Groovy metaClass 失败?