【发布时间】:2023-02-08 14:26:02
【问题描述】:
我遇到了这个问题:
对于集成测试,我们有一个已经填充数据的旧数据库。某些数据没有正确的值(例如,对于布尔列,也有空值)。现在,在创建一些集成测试时,这些测试由于数据没有正确的值而失败。
我认为在data.sql 文件中添加一些脚本来更正数据(例如UPDATE my_table SET my_column = 0 WHERE my_column IS NULL)是个好主意,但问题是此更新也会提交给数据库,因此数据已更改(现在没有更多的 null 值)。更改数据库数据不是一个选项,所以我想做的是在每个测试/类结束时对 data.sql 文件进行某种回滚。你能请adivse吗?
版本为Spring boot 2.0.7.RELEASE,测试依赖为spring-boot-starter-test,测试标注为@SpringBootTest,数据库为Oracle。
应用程序.yml:
spring:
datasource:
driver-class-name: oracle.jdbc.OracleDriver
url: ${URL}
username: ${USERNAME}
password: ${PASSWORD}
continue-on-error: true
【问题讨论】:
-
我建议改用测试容器,一个数据库容器,每次执行测试时都会在 docker 中运行,一旦测试完成容器关闭,就会创建类似于生产中的模式。
-
我还建议不要为此依赖回滚。使用新模式,您可以每次写入并丢弃或截断并重新启动。
标签: java oracle spring-boot spring-data spring-boot-test