IntelliJ无法找到类路径测试资源

时间:2014-08-26 19:30:57

标签: java intellij-idea classpath

我遇到一个问题,IntelliJ 13.1.4在运行单元测试时无法在我的模块的ServiceLoader目录中找到src/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项目。
  6. 关于还有什么可能导致IntelliJ在这里失败的任何想法?


    我的模块配置的屏幕截图,显示了“测试资源文件夹”设置。

    My Test Resource Folders is correctly set.

8 个答案:

答案 0 :(得分:33)

我设法通过创建与test-resources目录(!)并行的test目录来更好地工作。

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

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

修改

found a workaround来解决这个问题。

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

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

答案 1 :(得分:21)

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

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

enter image description here

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

enter image description here

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

enter image description here

然后选择“课程”选项。

enter image description here

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

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

答案 2 :(得分:3)

当我遇到同样的问题时,一旦取消标记资源目录作为资源根目录,然后将其再次标记为资源root,它对我有用:

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

就我而言,我只是通过maven命令行(即基本的mvn clean install)运行测试。之后,它在IDEA中起作用。

答案 5 :(得分:0)

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

  • 我从根文件夹中删除了空格,my_project / project1 / all test正确传递。

答案 6 :(得分:0)

如果您的项目是多行家,但其他答案不起作用,请尝试执行此操作。

更改intellij中的工作目录。右键单击,转到编辑配置,选择要运行的必需的maven项目目录。

enter image description here

答案 7 :(得分:0)

对我来说,Build -> Recompile 创建了项目结构中描述的 out 文件夹。然后它可以找到我的课程。 enter image description here