加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何准备在内存替换中使用PostgreSQL的集成测试?

发布时间:2020-12-13 15:49:53 所属栏目:百科 来源:网络整理
导读:我了解到在集成测试中使用实际数据库可以显着减慢它们的速度.因此,我必须使用内存数据库,这可能会显着提高我的集成测试的速度. 我正在使用Springboot进行应用程序开发.如何配置PostgreSQL用于测试目的?内存数据库中是否有与PostgreSQL语法高度兼容的数据库
我了解到在集成测试中使用实际数据库可以显着减慢它们的速度.因此,我必须使用内存数据库,这可能会显着提高我的集成测试的速度.

我正在使用Springboot进行应用程序开发.如何配置PostgreSQL用于测试目的?内存数据库中是否有与PostgreSQL语法高度兼容的数据库?

如果没有,我应该如何进行集成测试.

解决方法

我对真实postgres的一些db测试每次需要10ms.我在每个测试中做了多次提交.所以:

要覆盖postgres-native功能,您需要相同的db(如您所见,h2和其他内存中的db不是很兼容). postgres没有内存模式.
对于功能测试,真实数据库本身并不比任何内存数据库慢得多.差异通常在于启动时间(对于postgres 9.6它是~4s).但是,如果您的测试生命周期是智能的,并且您可以将db启动次数降低到1或0(通过让开发db始终准备好),那么问题就会停止显着.

所以获得真正的postgres并正确设置其生命周期.有一些工具可以帮助您解决一些问题:

> testcontainers将帮助您提供
真正的数据库
> dbunit – 将帮助您清理测试之间的数据

缺点:

>创建和维护架构和数据需要做很多工作.特别是当您的项目处于密集开发阶段时.
>它是另一个抽象层,所以如果突然想要使用这个工具不支持的某个数据库功能,可能很难测试它

> testegration – 旨在为您提供完整,随时可用和可扩展的生命周期(披露:我是创建者).

缺点:

>仅限小型项目
>非常年轻的项目

另一个步骤是在操作系统级别将db移动到内存.再次,第一次启动时间将类似,因为所有需要加载.一些起点here和here

缺点:

>团队中的每个开发人员都必须修改他的本地环境>操作系统之间不可移植(如果您的团队有异构环境)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读