用于在存储库测试中创建相同表的 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章

创建用于在 SQLce 数据库中创建表的 SQL 语句

shell中创建mysql库和执行sql脚本

QTP - 工作原理

PHP在与脚本相同的目录中创建文件

在与shell脚本相同的目录中创建文件夹[重复]

如何在 SQL Server 中创建“脚本生成器选项”脚本?