运行 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);
...
}
这使得错误处理变得更加简单。此外,它允许在测试和以后的生产中使用不同的配置文件。
我在 运行我的 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);
...
}
这使得错误处理变得更加简单。此外,它允许在测试和以后的生产中使用不同的配置文件。