我不想加载整个Sping 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
}
}
我得到错误:
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
我尝试将文件放在src/main/resources
(不是首选)和src/test/resources
(我更喜欢)
注意:我在Eclipse内部通过执行Run as -> JUnit test
来运行单元测试。
编辑:在配置类中增加static
关键字
2条答案
按热度按时间wpx232ag1#
除非在定义前添加static关键字,否则您的内部配置类将无法工作。但是,您应该知道对于@Sql注解
路径资源语义
每个路径将被解释为Spring Resource。普通路径-例如,“schema.sql”-将被视为相对于其中定义测试类的包的classpath资源。以斜杠开头的路径将被视为绝对classpath资源,例如:引用URL的路径(例如,以classpath:、file:、http:等为前缀的路径)将使用指定的资源协议来加载。
因此,尝试在
@Sql
中的值前面加上classpath:
,如下所示:祝你好运!
uinbv5nw2#
检查你的模块的
out
目录。在资源中创建目录时,如果你直接用命名空间命名,比如com.gakshintala.bookmybook
,它会完全用那个名字作为目录名,所以out
也包含了resources
下的这个目录,名字是com.gakshintala.bookmybook
。PFB对与错。顶部是对的,底部是错的。第一节第一节第一节第一节第一次
Spring总是查找嵌套的目录资源-〉com-〉gakshintala-〉bookmybook。因此创建该目录结构。