如何配置@ContextConfiguration?

时间:2013-12-26 09:10:28

标签: spring spring-mvc

我正在尝试设置和测试我的数据库。 我需要配置我的@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);

    }

}

pic

2 个答案:

答案 0 :(得分:0)

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中。

答案 1 :(得分:0)

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

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

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