为什么Spring给出一个不存在的文件时会运行@ContextConfiguration?

时间:2014-08-08 07:36:05

标签: java spring

我正在调试某人的java并试图弄清楚Spring配置文件是否正确加载。这很复杂,因为Spring似乎默默地忽略了不存在的文件。例如,以下运行正常:

import org.springframework.test.context.*;
import org.junit.runner.*;
import org.junit.Test;
import org.springframework.test.context.junit4.*;

@ContextConfiguration(locations={"classpath:I_DONT_EXIST.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class Test3 {
    public static void main(String [] args){
        System.out.println("Hello World");
    }

    @Test
    public void testSomething() {
    }
}

尽管指示的文件I_DONT_EXIST.xml在任何地方都不存在。有没有办法修改它,所以如果指定的文件不存在,运行时会抱怨?

1 个答案:

答案 0 :(得分:0)

Spring会抱怨缺少上下文xml文件。

我不确定你是如何使用你粘贴的类但是为了启动测试的弹簧上下文(在JUnit框架上执行它)你可以按如下方式注释你的类:

@ContextConfiguration(locations={"classpath:I_DONT_EXIST.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class Test2 {
    public static void main(String [] args){
        System.out.println("Hello World");
    }

    @Test
    public void testSomething() {
    }
}

当尝试以JUnit测试执行时,这将抛出以下异常:

Caused by: java.io.FileNotFoundException: class path resource [I_DONT_EXIST.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157) ~[org.springframework.core-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) ~[org.springframework.beans-3.2.4.RELEASE.jar:3.2.4.RELEASE]