Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot spring boot微服务端到端测试和数据库验证_Spring Boot_Cucumber_Microservices_Bdd_Spring Test - Fatal编程技术网

Spring boot spring boot微服务端到端测试和数据库验证

Spring boot spring boot微服务端到端测试和数据库验证,spring-boot,cucumber,microservices,bdd,spring-test,Spring Boot,Cucumber,Microservices,Bdd,Spring Test,我的项目基于事件驱动的微服务体系结构。我们正在尝试使用cucumber进行端到端测试,以便测试中的特性以业务可读的格式提供 详情如下。 服务架构: 涉及4个微服务。我们将请求发送给服务A,请求被处理并存储在DB中,服务A发布事件,该事件被服务B使用,服务B再次处理事件并将结果存储在DB中,并发布事件以供服务C使用,类似于服务D UserPost请求服务A->处理,存储在数据库中并将事件发布到服务B->服务B消费事件从A,处理并存储结果到数据库,将事件发布到C 测试策略: 作为端到端测试的一部分,

我的项目基于事件驱动的微服务体系结构。我们正在尝试使用cucumber进行端到端测试,以便测试中的特性以业务可读的格式提供

详情如下。 服务架构:

涉及4个微服务。我们将请求发送给服务A,请求被处理并存储在DB中,服务A发布事件,该事件被服务B使用,服务B再次处理事件并将结果存储在DB中,并发布事件以供服务C使用,类似于服务D

UserPost请求服务A->处理,存储在数据库中并将事件发布到服务B->服务B消费事件从A,处理并存储结果到数据库,将事件发布到C

测试策略: 作为端到端测试的一部分,我们将向服务A发送post请求。服务A将只返回响应200,而不返回响应主体

我们需要对每个服务数据库中的数据进行验证,并断言这是预期的

类似于功能文件

给定 系统处于预期状态。 什么时候 向服务A发送请求 和 服务返回200响应 和 验证服务数据库中是否存在已处理的数据 和 验证已处理的数据是否存在于服务B数据库中 和 验证已处理的数据是否存在于服务C DB中

**我想了解, 1.进行此类测试的正确方法应该是什么

这是在DB中进行端到端测试和验证的正确方法,还是应该使用其他方法** 这是你的问题: 我们需要对每个服务数据库中的数据进行验证,并断言这是预期的

这是在单元测试和应用程序测试中完成的

如果您需要验证每个数据库中的数据是否正确,那么您将尝试进行单元测试,但您的单元是一组服务的组合

你正在做一个巨大的单元测试

单元测试 单元测试验证每个服务中的逻辑是否正确

隔离应用测试 测试api是否使用正确的状态代码响应正确的错误。它正确地读写数据库。这里测试应用程序的api

端到端 将一组服务粘在一起,发布一些数据,验证返回的数据是否符合预期。您不会详细讨论每个服务都做了什么,这已经在早期的测试中得到验证

这是最后一次检查,服务基本上可以通信并返回您所期望的内容。你对他们怎么做不感兴趣

你的案子 你把一些东西贴到你的服务上,你会得到200分的回扣。那你应该很高兴,考试通过了。因为服务达到了您的预期,所以您发布了一些内容,它返回了200

前面的测试已经通过了单元测试和应用程序测试,它们告诉您每个服务都遵循给定的规范。所以,当你准备好端到端的测试时,你已经测试到了这一点

只有当所有的东西都被孤立地测试时,你才能做到端到端

在端到端测试中,您对它的执行方式毫无兴趣,只对它返回的内容感兴趣

不要在端到端测试中进行单元测试