【发布时间】:2022-01-20 00:38:02
【问题描述】:
我有一个 Spring Boot 测试,我在测试方法中添加了 @Sql("some-script.sql") 和 @Transactional 注释,并且我希望脚本中的数据填充到内存数据库中的 H2 中,但是在检查,它不是,所以我的测试失败了。我可以确认我没有硬编码的提交语句,并且 SQL 脚本正在按照 spring 数据源 ScriptUtils 类中的日志行执行。
我期望的行为是,对于每个测试方法,我都有一个单独的 SQL 脚本,我正在执行该脚本来填充数据,验证被测类的某些行为,然后回滚在测试方法完成后的脚本。我不希望测试方法完成后测试数据存在于内存数据库中,并且我不想为每个测试方法重新加载 spring 上下文,所以我认为有一种方法可以通过事务使这成为可能,但我没有取得太大的成功。有谁知道如何使我所呼吁的行为起作用?
【问题讨论】:
标签: spring-boot spring-data-jpa spring-data spring-boot-test