java - 在执行 Spring boot Junit 类之前只运行一次 sql 脚本
问题描述
我正在尝试在执行 Spring boot Junit 类/回归测试套件之前执行一个可能包含任何 CRUD 操作的 Sql 文件。我使用典型/传统的 JDBC 方式做到了,但想使用最新的 API。JDBC 模板在这里似乎无济于事,因为我正在尝试运行脚本。请在这里帮助我。
解决方案
我相信您想要实现的是在运行测试之前预先为您的数据库播种。为此,我通常使用两种策略之一。
您可以将一个名为的文件
data.sql
放入您的src/main/resources
orsrc/test/resources
文件夹中。Spring Boot 会自动拾取它并将数据导入您的数据库。如果您只想导入一个模式,您可以将schema.sql
其用作替代方案。如果您想为测试加载特定的数据和模式,您也可以随时使用
@Sql
注释。它允许您指定要在运行测试之前运行的 SQL 文件列表。
@Sql({"/employee_schema.sql", "/employee_test_data.sql"})
public class EmployeeTest {
@Autowired
private EmployeeRepository employeeRepository;
@Test
public void testLoadDataForTestClass() {
assertEquals(3, employeeRepository.findAll().size());
}
}
我通常参考这个优秀的教程https://www.baeldung.com/spring-boot-data-sql-and-schema-sql
推荐阅读
- windows-services - 如何在c#中存储密码
- python - 如何解决使用 spacy 时遇到的问题?
- python - 当列名与 Pandas 的数据内联时,如何读取 .txt 文件?
- python - Jupyter notebook 从快捷方式启动
- excel - VBA Excel宏选择所有活动行的范围
- cpu - 为什么字节序与单个字节无关?
- python - 如何在 Miniforge(不是 Miniconda)中访问/安装 Powershell 提示符或等效命令提示符?
- javascript - 如何使用打字稿从模块中导出接口?
- mysql - 更新 mysql 中的 500000 行值
- reactjs - 反应没有主题的 KeyboardDatePicker 样式