Intellij Idea IntelliJ找不到类别路径测试资源

guicsvcw  于 2022-11-21  发布在  其他
关注(0)|答案(9)|浏览(216)

我遇到了一个问题,IntelliJ 13.1.4在运行单元测试时,无法在我的模块的src/test/resources目录中找到ServiceLoader文件。
请注意,在回答之前,我已经完成了以下所有工作:
1.该模块是一个Gradle项目,如果我运行gradle test,单元测试运行良好。
1.我以前在IntelliJ中成功地运行过这个单元测试,它找到了这个模块。(可能是IntelliJ的早期版本?)
1.我已经仔细检查了IntelliJ模块的设置,src/test/resources目录被标记为测试资源目录。(见下面的屏幕截图。)
1.我在类中转储单元测试类的类加载器的类路径;它具有build/classes/test/build/classes/java目录,但既没有build/resources/test/,也没有build/resources/main/
1.我已单击该按钮刷新所有Gradle项目。
有什么想法,还有什么可能导致IntelliJ在这里失败?
我的模块配置屏幕快照,其中显示了“测试资源文件夹”设置。

myzjeezk

myzjeezk1#

我通过创建一个与test目录(!)并行的test-resources目录来使它更好地工作。
不过,仍然会遇到间歇性的问题。在这种情况下,可以打开IntelliJ项目设置并将测试资源定义为 source(Gradle项目将保持不变)。
一定是一个IntelliJ错误,因为我在Android Studio中经历过同样的事情。

编辑:

我找到了解决此问题的方法。
在Gradle配置末尾添加以下内容(并指定您的测试资源路径):

task copyTestResources(type: Copy) {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources
mefy6pfw

mefy6pfw2#

我在IntelliJ 14中遇到了类似的问题。尽管我的resources文件夹中有必要的文件,并确保在模块设置中将该文件夹指定为资源,IntelliJ还是间歇性地无法将我的文件加载到类路径中。
一种解决方法是在模块设置中添加所需的文件夹作为模块的依赖项。

首先,单击“+”按钮添加新的依赖项。

然后,选择要添加到类路径中的文件夹。

然后选择“类”选项。

一旦完成,重新构建您的模块一次,希望这应该做的伎俩。
理想情况下,这根本不应该是一个问题。资源文件夹中的所有文件都应该直接放在类路径中。然而,每个IDE都有它的怪癖。

tzdcorbm

tzdcorbm3#

当我遇到同样的问题时,我曾经 * 取消 * 将资源目录标记为资源根目录,然后再次将其标记为资源根目录:
1.右键单击资源文件夹〉将目录标记为...〉取消标记为资源根目录
1.右键单击资源文件夹〉将目录标记为...〉测试资源根目录

mftmpeh8

mftmpeh84#

在我的例子中,我只是通过Maven命令行运行测试,IidoEe.一个基本的mvn clean install。之后,它在IDEA中工作。

xzabzqsa

xzabzqsa5#

当有多模块项目时,IntelliJ倾向于将顶层模块设置为工作目录,如果是这样,可以尝试将其改为子模块目录。

bvjveswy

bvjveswy6#

如果你的项目是多maven和其他答案没有工作,尝试这一个。
更改intellij中的工作目录。右键单击,转到编辑配置,选择您要运行的所需maven项目目录。

fae0ux8s

fae0ux8s7#

对我来说,Build -> Recompile创建了项目结构中描述out文件夹,然后它就可以找到我类

hmae6n7t

hmae6n7t8#

我最近遇到了junit测试无法在src/test/resources目录中找到资源的情况。
我有一个流浪的<packaging>pom</packaging>pom.xml文件和采取它解决了它在我的情况。

wooyq4lh

wooyq4lh9#

我遇到了同样的问题,Junit失败(FileNotFound),因为我的根项目文件夹中有空间。例如:我的项目/项目1/....

  • 我删除了根文件夹中的空间,my_project/project 1/ all测试正常通过。

相关问题