IntelliJ找不到类路径测试资源

Lui*_*las 51 java classpath intellij-idea

我遇到一个问题,IntelliJ 13.1.4在运行单元测试时无法ServiceLoadersrc/test/resources我的模块目录中找到文件.

请在回答之前注意我已完成以下所有操作:

  1. 该模块是Gradle项目,如果我运行gradle test单元测试运行正常.
  2. 我过去在IntelliJ中成功运行了这个单元测试,它找到了模块.(也许是IntelliJ的早期版本?)
  3. 我已经仔细检查了IntelliJ模块设置,并且该src/test/resources目录被标记为测试资源目录.(见下面的截图.)
  4. 我在类中转储了单元测试类的类加载器的类路径; 它有build/classes/test/build/classes/java目录,但也build/resources/test/没有build/resources/main/.
  5. 我点击了按钮刷新所有Gradle项目.

关于还有什么可能导致IntelliJ在这里失败的任何想法?


我的模块配置的屏幕截图,显示"测试资源文件夹"设置.

我的测试资源文件夹已正确设置.

Kri*_*tad 34

我设法通过创建test-resourcestest目录(!)并行的目录来使其更好地工作.

尽管如此,仍然看到间歇性的问题.那些时候,可以打开IntelliJ项目设置并将测试资源定义为源代码(Gradle项目将保持不变).

必须是IntelliJ错误,因为我在Android Studio中遇到过同样的事情.

编辑:

找到了解决这个问题的方法.

在Gradle配置结束时添加以下内容(并指定测试资源路径):

task copyTestResources(type: Copy) {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources
Run Code Online (Sandbox Code Playgroud)

  • @bacar 看起来已经报告了类似的问题:https://youtrack.jetbrains.com/issue/IDEA-128273 (7认同)
  • 使用 Maven 也有同样的体验。仍然。知道与您的修复程序等效的 Maven 是什么吗?我有依赖于一些平面文件的测试,Maven 在控制台中找到它们,但 IntelliJ 爆炸声称找不到它们。 (2认同)

Adi*_*ada 26

我在IntelliJ 14中遇到了类似的问题.尽管在我的资源文件夹中有必要的文件并确保在模块设置中将文件夹指定为资源,但IntelliJ间歇性地无法将我的文件加载到类路径中.

一种解决方法是在模块设置中将所需文件夹添加为模块的依赖项.

在此输入图像描述

首先,单击"+"按钮添加新的依赖项.

在此输入图像描述

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

在此输入图像描述

然后选择"类"选项.

在此输入图像描述

完成后,重新构建一次模块,希望这应该可以解决问题.

理想情况下,这根本不应成为问题.资源文件夹中的所有文件都应直接放在类路径中.但是,每个IDE都有它的怪癖.

  • 谢谢你的修复工作!在我写这篇评论的日期,这似乎仍然没有打破. (4认同)

Hen*_*ter 10

当我遇到相同的问题时,它对我来说曾经是将资源目录取消标记为资源根目录,然后再次将其标记为资源根目录的方法:

  1. 右键单击资源文件夹>将目录标记为...>取消标记为资源根
  2. 右键单击资源文件夹>将目录标记为...>测试资源根


man*_*ays 6

就我而言,我只是通过 maven 命令行运行测试,即一个基本的mvn clean install. 之后它在IDEA中工作。