运行 JUnit 测试时找不到资源文件

Resource files not found when running JUnit test

我在 运行我的 JUnit 测试时遇到问题,它失败了,因为它找不到项目资源。

我的测试启动了一个服务器,该服务器使用 URLClassLoader 加载所有需要的资源。我对在 运行 否则我的项目中找不到资源没有问题。只有当我尝试 运行 我的 JUnit 测试时才会出现此问题。

我试过在我的 运行time 配置中添加文件路径作为参数进行测试,例如:

-cp .:/path/to/the/config/file 

不过没关系。

请帮忙!

项目结构:

默认的 Maven 测试路径是 src/test/java,因此如果您的测试不在该目录中,您必须在 pom.xml 中使用标记 <testSourceDirectory> 定义测试路径,在 <build>。您还必须包括 maven-surefire-plugin

Maven 中的惯例是将所有 Java 测试代码放在 src/test/java 中。这是为了防止在最终产品中意外包含测试代码。所以我建议你移动你的测试。

由于您没有显示用于加载资源的代码,我无法告诉您其中是否存在任何错误。但是 /path/to/the/config/file 很可能是错误的;必须是 /path/to/the/config 所以你可以说 Java getClass().getClassLoader().getResource("file").

但我建议使用命令行参数来指定配置文件:

main(String[] args) {
    File configFile = new File(args[0]).getAbsoluteFile();
    if(!configFile.exists()) throw new IllegalArgumentException("Unable to find config file: " + configFile);
    ...
}

这使得错误处理变得更加简单。此外,它允许在测试和以后的生产中使用不同的配置文件。