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

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

概述我了解到在集成测试中使用实际数据库可以显着减慢它们的速度.因此,我必须使用内存数据库,这可能会显着提高我的集成测试的速度. 我正在使用Springboot进行应用程序开发.如何配置PostgreSQL用于测试目的?内存数据库中是否有与PostgreSQL语法高度兼容的数据库? 如果没有,我应该如何进行集成测试. 我对真实postgres的一些db测试每次需要10ms.我在每个测试中做了多次提交.所 我了解到在集成测试中使用实际数据库可以显着减慢它们的速度.因此,我必须使用内存数据库,这可能会显着提高我的集成测试的速度.

我正在使用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

缺点:

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

总结

以上是内存溢出为你收集整理的如何准备在内存替换中使用PostgreSQL的集成测试?全部内容,希望文章能够帮你解决如何准备在内存替换中使用PostgreSQL的集成测试?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1155627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存