Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行JUnit测试时未找到资源文件_Java_Maven_Junit - Fatal编程技术网

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

Java 运行JUnit测试时未找到资源文件,java,maven,junit,Java,Maven,Junit,我在运行JUnit测试时遇到问题,它失败了,因为它无法找到项目资源 我的测试启动一个服务器,该服务器使用URLClassLoader加载所有需要的资源。否则,在运行我的项目时找不到资源,我没有问题。只有当我尝试运行JUnit测试时,才会出现此问题 我已尝试将文件路径作为参数添加到测试的运行时配置中,例如: -cp .:/path/to/the/config/file 但这没什么区别 救命啊 项目结构: 默认的Maven测试路径是src/test/java,因此,如果您的测试不在该目录中,您必

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

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

我已尝试将文件路径作为参数添加到测试的运行时配置中,例如:

-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
,因此可以在Java
getClass().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
,…)。此外,如果合并资源文件夹和源文件夹,资源处理也会变得更加复杂。看见