在执行 Spring boot Junit Class 之前 运行 只执行一次 sql 脚本
To Run an sql script only one time before executing Spring boot Junit Class
我正在尝试在执行 Spring 引导 Junit class/ 回归测试套件之前执行可能包含任何 CRUD 操作的 Sql 文件。我使用 typical/legacy JDBC 方式完成,但想使用最新的 API。 JDBC 模板在这里似乎无济于事,因为我正在尝试 运行 脚本。请帮帮我。
我相信您要实现的目标是在 运行ning 测试之前预先植入您的数据库。为此,我通常使用两种策略之一。
您可以将名为 data.sql
的文件放入 src/main/resources
或 src/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
我正在尝试在执行 Spring 引导 Junit class/ 回归测试套件之前执行可能包含任何 CRUD 操作的 Sql 文件。我使用 typical/legacy JDBC 方式完成,但想使用最新的 API。 JDBC 模板在这里似乎无济于事,因为我正在尝试 运行 脚本。请帮帮我。
我相信您要实现的目标是在 运行ning 测试之前预先植入您的数据库。为此,我通常使用两种策略之一。
您可以将名为
data.sql
的文件放入src/main/resources
或src/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