用于在存储库测试中创建相同表的 Sql 脚本
Posted
技术标签:
【中文标题】用于在存储库测试中创建相同表的 Sql 脚本【英文标题】:Sql scripts for creation of same table in repository tests 【发布时间】:2021-05-31 16:15:18 【问题描述】:我有几个 Spring 数据存储库,它们有一些连接到同一个表,比如说客户端表。因此,为了不重复为每个存储库测试创建 Client 表的 sql 脚本(这将是一个不好的做法),将这个表的创建外部化在单个 sql 文件中并导入它是一个好习惯吗?在测试中他们需要它吗?
谢谢!
【问题讨论】:
一开始为什么要为测试只创建部分模式?只需使用 Liquibase 或您正在使用的任何东西创建完整的架构并完成它。 我正在使用 JPA。那么,为每个存储库测试重新创建整个数据库是一个好习惯吗? 至少我会这样做,而且我在几乎所有情况下都看到过。 【参考方案1】:通常的做法不是为每个测试创建自定义架构,而是使用您将在生产中使用的相同脚本/机制为所有测试创建完整架构。
数据库模式不是模块化的,它们到处都有依赖关系。 这些依赖项以外键的形式出现,但也以触发器或物化视图和约束的形式出现。
如果您的架构小而简单,那么将其分解成碎片是没有意义的。 如果它很大,很容易遗漏一些东西,并且测试不能正确代表生产环境。
【讨论】:
以上是关于用于在存储库测试中创建相同表的 Sql 脚本的主要内容,如果未能解决你的问题,请参考以下文章