在执行 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 测试之前预先植入您的数据库。为此,我通常使用两种策略之一。

  1. 您可以将名为 data.sql 的文件放入 src/main/resourcessrc/test/resources 文件夹中。 Spring Boot 会自动拾取它并将数据导入您的数据库。如果您只想导入一个模式,您可以使用 schema.sql 作为替代。

  2. 如果您想要为测试加载特定数据和模式,您也可以始终使用 @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