如何在共享同一架构的不同应用程序之间进行数据库架构测试

时间:2020-04-30 18:04:01

标签: spring microservices liquibase datacontract pact

我遇到的情况是,我有两个共享相同数据库架构的SpringBoot微服务。该模式由liquibase changelog文件维护。一个服务从数据库读取,而另一服务负责写入数据库。

对,Writing Service拥有liquibase changelog文件,这意味着Writing Service拥有架构。我验证Reading Service的方法是先将Writeing服务部署到测试环境中,然后再部署到Reading Service,然后再针对Reading Service执行端到端测试。

两种服务(两个单独的应用程序,两个单独的存储库)是否可以共享liquibase更改日志文件?我觉得这类似于合同测试,因为changelog文件将是这两项服务的合同,但是不确定Liquibase,Spring,Pact等提供的支持此想法的东西。

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

我认为这不会算是一个合法的答案,但是我想到了两种解决方案:

  1. 因为您的第二项服务是从数据库中读取的,所以我想您那里有一套完整的实体,并且这些实体应该与您的数据库架构匹配。并且由于您正在使用Spring,所以我想您可以将spring.jpa.hibernate.ddl-auto=validate添加到application.properties文件中。这将针对实体验证您的数据库架构。

  2. 您可以创建一个单独的库,其中将包含所有changeLogs。之后,您可以将此库包含在两个服务中,因此liquibase将验证在应用程序部署期间是否执行了所有changeSet。但是,您应该确保所有changeSet都具有preConditions,这样部署不会失败,并且数据库架构中不会有任何重复项。