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

标签 java sql-server database jdbc junit4

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

最佳答案

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

  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());
    }
}

我通常引用这个优秀的教程:

关于java - 在执行 Spring boot JUnit 类之前仅运行一次 sql 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61803691/

相关文章:

java - ".": Illegal @MultipartConfig location

sql-server - 如何使用事务(开始事务、提交事务)?

sql-server - SQL Server 索引 View 列精度

.NET 数据库访问 : Newest technology, 比较 (2011)

java - 通过 JVM 参数进行 log4j 配置?

Java Applet : painted ball does not appear in the hard-coded position. Applet 不保持恒定大小

java - ActiveMQ 中消费者的确认

c# - 在未安装集成服务的情况下从 C# 执行 SSIS 包

mysql - mysql如何判断一条记录中的一组值中是否存在某个值

SQL Select Count(person_id) > 3 来自