当前位置: 首页 > 知识库问答 >
问题:

Spring xml+JUnit-XML上下文文件不能在src/test/resources中工作,但可以在src/main/resources中工作

苏宏峻
2023-03-14

我对这样的junit测试有问题。出于某种原因,spring上下文文件只有放在maven项目的src/main/resources文件夹中才能工作。Intellij没有给我任何警告,但是来自mvn和ide炸弹的junit测试运行器都没有给我任何警告。

这两种情况下的代码和输出如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:/test-applicationContext.xml"})
public class DataSharingTest {

    AuthTokenService authTokenService;

    @Autowired
    public void setAuthTokenService(AuthTokenService authTokenService) {
        this.authTokenService = authTokenService;
    }

    @Test
    public void MyTest(){
        System.out.println(authTokenService);
    }
}
2014-07-29 16:44:18,061 main      ERROR TestContextManager    Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@69e328e0] to prepare test instance [com.jg.datasharing.DataSharingTest@4090c06f]
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [test-applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [test-applicationContext.xml] cannot be opened because it does not exist. If I try a wildcard in the path it will stop complaining about file not found but will compalain that the bean is missing.
2014-07-29 16:46:53,564 main      INFO  lBeanDefinitionReader Loading XML bean definitions from class path resource [test-applicationContext.xml]
2014-07-29 16:46:53,778 main      INFO  ricApplicationContext Refreshing org.springframework.context.support.GenericApplicationContext@7426dbec: startup date [Tue Jul 29 16:46:53 EDT 2014]; root of context hierarchy
2014-07-29 16:46:53,904 main      INFO  ltListableBeanFactory Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@19202d69: defining beans [authTokenService,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
com.jg.security.token.auth.JwtAuthTokenService@1380cf2a
2014-07-29 16:46:53,995 Thread-1  INFO  ricApplicationContext Closing org.springframework.context.support.GenericApplicationContext@7426dbec: startup date [Tue Jul 29 16:46:53 EDT 2014]; root of context hierarchy
2014-07-29 16:46:53,996 Thread-1  INFO  ltListableBeanFactory Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@19202d69: defining beans [authTokenService,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy

Process finished with exit code 0

为什么在测试上下文类路径中找不到该文件?

共有1个答案

宋岳
2023-03-14

检查是否将测试/资源添加为类路径。您可以在eclipse IDE中进行验证,如下所示。

右键单击项目->Properties->Java build path->在Sources选项卡中,您应该找到{proejct}/src/test/resources(包含全部选项)

如果找不到该选项,可以手动添加目录,也可以按如下方式配置pom.xml

<build>
   <testResources>
            <testResource>
                <directory>${basedir}/src/test/resources</directory>
            </testResource>
   </testResources>
</build>
 类似资料:
  • 我有一个java,gradle项目。我的少年 选择一些配置 Junit中拾取此文件的代码是 当我奔跑时 这个很好用。Junit能够从csv文件中拾取数据。 当我在Eclipse中运行JUnit时,即通过Shift Alt X T,然后JUnit以空指针异常中断。 我明白原因。当我在eclipse中运行Junit时,它会在同一个文件夹中查找该文件,但没有找到它,因此失败。但是,当我使用gradle运

  • 我有一个目录结构如下的maven模块,我想在中获取的路径 我使用进行了尝试,但它给出了一个空值。 无法获取资源的路径

  • 我在我的maven项目中的src/main/资源下放置了一个文件,文件名只是temp.txt. 当我试图打开文件时: 我得到一个错误: src/main/资源下的所有文件都放在maven下类路径的根文件夹中。那么为什么程序不能在这里找到文件呢?

  • 我有一个maven Spring项目,里面有文件。如何在SpringMVC控制器中读取它。 我正在使用 但是is.

  • 新手来了!我在SO上发现了很多类似的问题,但没有一个给我一个明确的答案。 我尝试过的一个可能的解决方案是不运行这些脚本(从'classpath:db/schema.sql'中删除init=runscript\\从'classpath:db/data.sql'中删除runscript),在测试之前以编程方式创建一些对象并将它们持久化到数据库,然后编写test,但我认为从脚本填充数据比在每个测试类中编

  • 问题内容: 我试图用下面的抽象类在src / test / resources类路径中加载spring配置文件: 我在src / test / resources中有applicationContext.xml文件,但spring无法加载它。 谢谢。 问题答案: 确切地说,是类路径上的 测试输出目录 ()的内容,而不是。但资源下被复制到 测试输出目录 由 目标(这是默认绑定的 阶段)。 话虽如此,