有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在调试某人的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() {
    }
}

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


共 (1) 个答案

  1. # 1 楼答案

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

    我不确定您是如何使用粘贴的类的,但为了启动测试的spring上下文(让它在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]