当前位置: 首页 > 知识库问答 >
问题:

使用src/test/resources作为GradleJava的目录

连正信
2023-03-14

我有两个包含java代码和资源的工作目录,一个用于测试,另一个用于生产。

src/main/java
src/main/resources

src/test/java
src/test/resources

当运行我的代码并从FileInputStream读取文件时,如下所示:

new FileInputStream("./someFile.json");

只要文件位于项目的根目录中,就可以正常工作。如果我将文件放在资源文件夹中并直接指向它,它也可以工作,如下所示:

new FileInputStream("src/test/资源ile.json");

有没有办法在gradle中将src/test/resources声明为FileInputStream查找资源的主文件夹?

如果我把我的html" target="_blank">文件这样它工作正常。

但是当我像这样把文件放在src/test/java/Resources中时


我得到一个文件。

我需要一种方法来添加这个目录扫描gradle。



将此添加到构建中。gradle仍然抛出fileNotFoundException。

sourceSets {
test {
    java {
        srcDirs = ['src/test/java']
    }
    resources {
        srcDirs = ['src/test/resources']
        }
    }
}

共有1个答案

鲁钱明
2023-03-14

如果您使用java应用程序插件,因为您似乎正在构建一个命令行应用程序,那么一切都将立即为您设置:

plugins {
    id 'application'
}

您可以删除所有sourceSet配置,然后像这样加载文件:

new FileInputStream("/someFile.json");

(注意,我编写了/而不是/,这将含义从“查找当前目录中的项目根”更改为“查找类路径资源的根”。)
更好的做法是根据Slaw在问题下的评论,通过类#getResourceAsStream(String)定位文件-但这超出了您的问题的范围。

 类似资料:
  • 我知道我可以从src/test/resources加载一个文件: 但是如何获得src/test/resources目录的完整路径,即我不想加载一个文件,我只想知道目录的路径?

  • 我在论坛上搜索了我的问题的答案,但我找不到。我的问题是: 我有两个项目:项目A和项目B。ProjectB使用ProjectA。在ProjectA中,我有两个文件夹:/src/main/resources和/src/test/resource。在ProjectB中,我运行:mvn clean install。我希望,在测试阶段,ProjectB中的类使用/src/test/resources中的资源

  • 问题内容: 我在运行以下代码时遇到问题: 从Junit @Before方法中。 这是Maven建立目标文件夹的方式吗? 问题答案: 直接访问。该目录内容被放置在你的CLASSPATH的根。 更准确地说:的内容被复制到中,因此,如果您具有以下项目结构: 它将得到以下测试CLASSPATH内容: 要实际从Java源访问文件,请使用 。

  • 我对这样的junit测试有问题。出于某种原因,spring上下文文件只有放在maven项目的src/main/resources文件夹中才能工作。Intellij没有给我任何警告,但是来自mvn和ide炸弹的junit测试运行器都没有给我任何警告。 这两种情况下的代码和输出如下: 为什么在测试上下文类路径中找不到该文件?

  • 我在我的maven项目中的src/main/资源下放置了一个文件,文件名只是temp.txt. 当我试图打开文件时: 我得到一个错误: src/main/资源下的所有文件都放在maven下类路径的根文件夹中。那么为什么程序不能在这里找到文件呢?

  • 我是Spring boot(1.1.8版,4.0.7版)的新手,需要修复一个单元测试。被测试的类使用另一个具有简单自动连线配置bean的类。bean的类主要查找一组键值对,其中键具有特定前缀。使用src/main/resources中的yaml文件,代码本身工作得非常好。然而,当我运行测试用例时,这个bean是空的。如何让测试用例读取src/test/resources目录中的yaml文件?