【问题标题】:Spring Boot version 2.3.x src/test/resources removedSpring Boot 2.3.x 版 src/test/resources 已移除
【发布时间】:2020-08-27 14:16:52
【问题描述】:

好像在 Springboot 2.3.x 版本中,他们已经把 src/test/resources 文件夹去掉了,

我从start.spring.io下载了一个skeleton没看到,目前的项目结构如下,这种情况下怎么使用测试专用的属性文件,问题是即使我创建了src/ test/resources 文件夹并在其中放置一个 test.property 文件,在我运行测试时找不到它,非常感谢任何帮助。

我在 start.spring.io 中生成骨架项目时选择的选项

【问题讨论】:

  • 这取决于您阅读该文件的方式。

标签: spring spring-boot spring-boot-test


【解决方案1】:

经过大量研究,我找到了答案,因此 src/test 下的“resources”文件夹已作为我们可以从 start.spring.io 下载的骨架项目的一部分被删除,但现在它们包含了一个新的构建任务,我的项目在 gradle 中,但我确信 Maven 也是如此,这个任务在 gradle 中的名称是“processTestResources”,它将你在src/test/resources 文件夹中的所有内容复制到<Project_HOME>/build/resources/test ,它在类路径中,您可以像以前一样访问您的资源,唯一的事情是现在您必须手动创建“资源”文件夹,现在问题已解决,感谢大家的投入。

【讨论】:

    【解决方案2】:

    您使用的是什么 IDE?该项目是否使用 Maven ?在带有 Maven 的 Eclipse 中,如果您右键单击 src/test 并选择 New -> Source Folder,并将其命名为资源,它应该由 Maven 创建并添加到测试类路径中。

    在src/main/resources中放置适当的文件后,和src/test/resources并运行

        try(final Stream<String> fileStreamFromClasspath = Files.lines(Path.of(ClassLoader.getSystemResource("test.file").toURI())))
        {
            fileStreamFromClasspath.forEach(l -> System.out.println(l)); // NOSONAR
        }
        try(final Stream<String> fileStreamFromFilesystem = Files.lines(Path.of(("src/main/resources/test.file"))))
        {
            fileStreamFromFilesystem.forEach(l -> System.out.println(l)); // NOSONAR
        }
        try(final Stream<String> testFileStreamFromFilesystem = Files.lines(Path.of(("src/test/resources/test.file"))))
        {
            testFileStreamFromFilesystem.forEach(l -> System.out.println(l)); // NOSONAR
        }
    

    产生输出:

    This is the test test file.
    This is the main test file.
    This is the test test file.
    

    【讨论】:

    • 我在使用 Eclipse 2020-06 和 Gradle,你知道为什么这个资源文件夹默认被删除了吗?以及其他选项是什么,或者 Spring Boot 是否提供了任何新选项来做同样的事情。
    • 我不认为它已被“删除”......我怀疑它与您选择的启动项目选项的类型有关。但我需要验证这一点。我相信添加我在 Eclipse 中描述的源文件夹也可以解决 Gradle 的问题。
    • 我刚刚附上了我在通过 start.spring.io 创建项目骨架时选择的选项的快照,我也回到了 Spring Boot 版本 2.1.17 ,在 start.spring.io ,但是一样的。
    • 您能说明您是如何尝试读取文件的吗?我会尝试复制您的问题。
    猜你喜欢
    • 2015-03-22
    • 2020-07-24
    • 2011-02-24
    • 1970-01-01
    • 2022-01-23
    • 2019-08-04
    • 2011-02-05
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多