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

Spring Boot测试:@sql annotation找不到放置在src/test/resources中的sql文件

赵晨
2023-03-14

我不想加载整个Spring Boot配置来对DAO层进行单元测试,因此创建了一个嵌套的配置类来抑制默认配置。但是当我试图指定SQL脚本让它在测试之前运行时,它找不到它们。

package com.test.customer.controller;
..
@RunWith(SpringRunner.class)
@JdbcTest
@Sql({"data.sql"})
public class InterviewInformationControllerTest {

    @Configuration
    static class TestConfiguration{

    }

    @Test
    public void testCustomer() {
        // code
    }

}

I get the error: Cannot read SQL script from class path resource [com/test/customer/controller/data.sql]; nested exception is java.io.FileNotFoundException: class path resource [com/test/customer/controller/data.sql] cannot be opened because it does not exist

注意:我是通过执行run as->JUnit test从Eclipse内部运行单元测试的。

编辑:将statice关键字添加到配置类

共有1个答案

上官鸿朗
2023-03-14

您的内部配置类将无法工作,除非您在其定义之前添加一个静态关键字。但是,您应该知道,对于@sql注释

路径资源语义

每个路径都将被解释为Spring资源。一个普通路径--例如,“schema.sql”--将被视为与定义测试类的包相对的类路径资源。以斜杠开头的路径将被视为绝对类路径资源,例如:“/org/example/schema.sql”。将使用指定的资源协议加载引用URL的路径(例如,以classpath:、file:、http:等为前缀的路径)。

因此,尝试在@sql中使用classpath:作为值的前缀,如下所示:

@Sql(scripts={"classpath:data.sql"})

祝你好运!

 类似资料:
  • 问题 我想用Java7SNIO用java编写一个数据导入。用户以字符串形式输入文件的路径,程序尝试使用路径打开它。当它想要读取它的DosFileAttributes时,可以使用java。尼奥。文件NoSuchFileException:文件。发生了什么。 我的发现 到目前为止,我找到的唯一答案是使用资源流——但这并不可行,因为要加载的文件是由用户提供的,不应该是jar的一部分。还是我误解了?htt

  • 问题内容: 我试图用下面的抽象类在src / test / resources类路径中加载spring配置文件: 我在src / test / resources中有applicationContext.xml文件,但spring无法加载它。 谢谢。 问题答案: 确切地说,是类路径上的 测试输出目录 ()的内容,而不是。但资源下被复制到 测试输出目录 由 目标(这是默认绑定的 阶段)。 话虽如此,

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

  • 我有一个java,gradle项目。我的少年 选择一些配置 Junit中拾取此文件的代码是 当我奔跑时 这个很好用。Junit能够从csv文件中拾取数据。 当我在Eclipse中运行JUnit时,即通过Shift Alt X T,然后JUnit以空指针异常中断。 我明白原因。当我在eclipse中运行Junit时,它会在同一个文件夹中查找该文件,但没有找到它,因此失败。但是,当我使用gradle运

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

  • 我使用的是spring boot 1.4.4,我有一个测试类,比如: 这是我的application.yml: application.yml是读取的,因为我将该值存储在字符串路径值中,conf.json位于/src/main/resources和/src/test/resouces中 但我要做什么:mapper.readtree(新URL(路径));我得到错误:文件找不到。 我试过:“class