在执行 Spring boot JUnit 类之前仅运行一次 sql 脚本

dev*_*one 4 java database sql-server jdbc junit4

我正在尝试在执行 Spring boot Junit 类/回归测试套件之前执行可能包含任何 CRUD 操作的 Sql 文件。我使用典型/传统 JDBC 方式完成此操作,但想使用最新的 API。JDBC 模板在这里不起作用,因为我正在尝试运行脚本。请在这里帮助我。

Mat*_*uer 5

我相信您想要实现的目标是在运行测试之前预先播种数据库。为此,我通常使用两种策略之一。

  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());
    }
}
Run Code Online (Sandbox Code Playgroud)

我通常参考这个优秀的教程: