如何准备在内存替换中使用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移动到内存.再次,第一次启动时间将类似,因为所有需要加载.一些起点herehere

缺点:

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

原文链接:/postgresql/821766.html

猜你在找的Postgre SQL相关文章