我使用@Sql

问题描述

我使用Book精简Spring Boot。(从本书复制并粘贴到编辑器中

我无法理解并且无法使用代码。

您可以教我如何解决以及应该学习什么吗?

@Test
//@Sql("file:C:/Users/<username>/Desktop/springsample/src/test/resources/testdata.sql") //This is work!
@Sql("/testdata.sql") // This is not work.
public void countTest2(){
    assertEquals(dao.count(),3);
}

请检查上面的代码,@Sql("/testdata.sql")不起作用。

Junit的结果就是这样。

由以下原因引起:java.io.FileNotFoundException:类路径资源[testdata.sql]无法打开,因为它不存在

所以我写了现在被注释掉的代码。有效。

我认为必须重写@Sql参数。但是我不知道该怎么做。

您能教我如何重写代码吗?

此问题是由于缺少Maven目录规则引起的吗?

附录

目录树在下面。

tree /F C:\Users\<username>\Desktop\springsample\src\test
C:\USERS\<username>\DESKTOP\SPRINGSAMPLE\SRC\TEST
├─java
│  └─com
│      └─example
│          └─springsample
│                  DemoApplicationTests.java
│                  UserDaoTest.java //Test code in this file.
│
└─resources
        testdata.sql

感谢您阅读。

其他信息

我阅读了参考文献,然后尝试了以下设置。 在这种情况下,需要将.sql文件放在与Test类文件相同的目录下。 我认为可以分配指定的位置。但是我不能。

@Sql("testdata.sql")

■目录树

C:\USERS\<username>\DESKTOP\SPRINGSAMPLE\SRC\TEST
├─java
│  └─com
│      └─example
│          └─springsample
│                  DemoApplicationTests.java
│                  UserDaoTest.java //Test code in this file.
│                  testdata.sql
└─resources
  └─com
      └─example
          └─springsample

解决方法

@Sql默认情况下会在@Test类的包中查找文件。

对于您的情况,应如下所示

C:\USERS\<username>\DESKTOP\SPRINGSAMPLE\SRC\TEST
├─java
│  └─com
│      └─example
│          └─springsample
│                  DemoApplicationTests.java
│                  UserDaoTest.java //Test code in this file.
│
└─resources
│  └─com
│      └─example
│          └─springsample
│                  testdata.sql

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...