Java 运行JUnit测试时未找到资源文件
我在运行JUnit测试时遇到问题,它失败了,因为它无法找到项目资源 我的测试启动一个服务器,该服务器使用URLClassLoader加载所有需要的资源。否则,在运行我的项目时找不到资源,我没有问题。只有当我尝试运行JUnit测试时,才会出现此问题 我已尝试将文件路径作为参数添加到测试的运行时配置中,例如:Java 运行JUnit测试时未找到资源文件,java,maven,junit,Java,Maven,Junit,我在运行JUnit测试时遇到问题,它失败了,因为它无法找到项目资源 我的测试启动一个服务器,该服务器使用URLClassLoader加载所有需要的资源。否则,在运行我的项目时找不到资源,我没有问题。只有当我尝试运行JUnit测试时,才会出现此问题 我已尝试将文件路径作为参数添加到测试的运行时配置中,例如: -cp .:/path/to/the/config/file 但这没什么区别 救命啊 项目结构: 默认的Maven测试路径是src/test/java,因此,如果您的测试不在该目录中,您必
-cp .:/path/to/the/config/file
但这没什么区别
救命啊
项目结构:
默认的Maven测试路径是
src/test/java
,因此,如果您的测试不在该目录中,您必须在pom.xml
中定义测试路径,并在
内部使用标记
。您还必须包括maven-surefire-plugin
。maven的惯例是将所有Java测试代码都放在src/test/Java
中。这是为了防止最终产品中意外包含测试代码。所以我建议你转移你的测试
由于您没有显示用于加载资源的代码,因此我无法告诉您其中是否存在任何错误。但是/path/to/the/config/file
很可能是错误的;is必须是/path/to/the/config
,因此可以在JavagetClass().getClassLoader().getResource(“文件”)
中说
但我建议使用命令行参数指定配置文件:
main(String[] args) {
File configFile = new File(args[0]).getAbsoluteFile();
if(!configFile.exists()) throw new IllegalArgumentException("Unable to find config file: " + configFile);
...
}
这使得错误处理更加简单。此外,它还允许在测试和以后的生产中使用不同的配置文件。您如何运行JUnit测试?在IDE中或使用gradle或maven?嗨,我在EclipseShow中以JUnit 4测试的形式运行我的测试。我对JUnit测试非常陌生,我的项目是maven项目。也许我还需要在我的pom文件中定义用于测试的文件?@bigdestroyer,谢谢你,我的测试路径不在src/test/java中,已移动到那里,现在正在工作!:D.添加一个答案,以便我可以接受itI建议不要更改
testSourceDirectory
,除非您知道自己在做什么,并且有很好的理由:-)原因是什么?例如,我不喜欢tipical source/test目录src/main/java
/src/test/java
。在所有项目中,我将
和
值更改为${project.basedir}/test
和${project.basedir}/src
。我认为它更漂亮、更干净。它让习惯Maven的人感到困惑,当你开始添加更多语言和插件时,它会给你带来麻烦(src/main/webapp
,src/main/site
,src/main/scala
,…)。此外,如果合并资源文件夹和源文件夹,资源处理也会变得更加复杂。看见