如何配置@ContextConfiguration?

Posted

技术标签:

【中文标题】如何配置@ContextConfiguration?【英文标题】:How do I configure @ContextConfiguration? 【发布时间】:2013-12-26 09:10:27 【问题描述】:

我正在尝试设置和测试我的数据库。 我需要配置我的@ContextConfiguration。 现在它只是给我一条错误消息“错误:org.springframework.test.context.TestContextManager - 在允许 TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@11739d] 准备测试实例时捕获异常 [se.lowdin .civilforsvaret.test.db.dbTest@1bd56d0] java.lang.IllegalStateException: 无法加载 ApplicationContext"

这很可能是因为我在 @ContextConfiguration 中的路径是错误的。 我测试在那里写“classpath:/WEB-INF/Spring/root-context.xml” 但这也不起作用。 这个怎么算?

import static org.junit.Assert.*;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;

import se.lowdin.civilforsvaret.webapp.domain.Person;
import se.lowdin.civilforsvaret.webapp.repositories.PersonRepository;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/WEB-INF/Spring/root-context.xml")
public class dbTest 

    @Autowired
    PersonRepository repo;

    @Test
    public void testDB() 

        Person person = new Person();
        person.setFirstName("Bengt");
        person.setLastName("Larsson");

        repo.createPerson(person);
        Person dbPerson = repo.getPerson(person.getId());
        assertNotNull(dbPerson);

    


【问题讨论】:

【参考方案1】:

WEB-INF 目录不在类路径中,因此无法像这样访问 xml 文件:

@ContextConfiguration(locations = "classpath:/WEB-INF/Spring/root-context.xml")

/WEB-INF/classes 在类路径中,所以你可以把它放在那里并像这样访问:

@ContextConfiguration(locations = "classpath:root-context.xml")

如果您使用 Maven,我建议您为测试创建另一个上下文文件并将其放入 src/test/resources

【讨论】:

好的,可能是这样,但类路径到底是什么? 这可能有助于您了解 Web 应用程序的类路径。 mulesoft.com/tomcat-classpath【参考方案2】:

src/main/resource 目录下的所有文件都被视为类路径。因此,只需将您的 root-context.xml 文件复制到资源目录中,然后在 dbTest 类中修改 @ContextConfiguration ,如下所示:

@ContextConfiguration(locations = "classpath:root-context.xml")

希望它对你有用..!!!

【讨论】:

以上是关于如何配置@ContextConfiguration?的主要内容,如果未能解决你的问题,请参考以下文章

spring - @ContextConfiguration 无法在 src/test/resources 中加载配置文件

Spring @ContextConfiguration注解

(转)@ContextConfiguration注解说明

如何在 @ContextConfiguration 初始化程序之前启动 kafka 测试容器?

ContextConfiguration不适用于测试平台的JUnit4类

如何在使用 @RunWith 和 @ContextConfiguration 注释的 jUnit 测试中访问 Spring 上下文?