Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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
Java Spring微服务端到端测试_Java_Spring_Testing - Fatal编程技术网

Java Spring微服务端到端测试

Java Spring微服务端到端测试,java,spring,testing,Java,Spring,Testing,我想为使用spring boot构建的管道编写一个端到端测试 考虑两个微服务A、B,其中B使用A的输出并生成RESTful API。它们使用rabbitmq连接,并依赖于外部数据库 我希望实现以下目标: 创建一个包含两个微服务的新项目 创建将JPA提供程序配置为内存中数据库的测试配置 将自定义MQ注入A、B以连接它们(rabbitmq不是紧密耦合的) 写测试 基本上用模拟件替换白色部件,并测试彩色部件 这有意义吗?A和B的测试范围不完整,此类测试将保证A和B之间的合同有效。有更好的方法吗?如果

我想为使用spring boot构建的管道编写一个端到端测试

考虑两个微服务A、B,其中B使用A的输出并生成RESTful API。它们使用rabbitmq连接,并依赖于外部数据库

我希望实现以下目标:

  • 创建一个包含两个微服务的新项目
  • 创建将JPA提供程序配置为内存中数据库的测试配置
  • 将自定义MQ注入A、B以连接它们(rabbitmq不是紧密耦合的)
  • 写测试
  • 基本上用模拟件替换白色部件,并测试彩色部件


    这有意义吗?A和B的测试范围不完整,此类测试将保证A和B之间的合同有效。有更好的方法吗?

    如果您有时间,我建议您阅读以下内容:


    端到端测试的目的不是实现100%的线路覆盖。

    我建议您使用。它帮助您维护微服务之间的合同(生产者-消费者合同)。
    它既可用于基于HTTP的通信,也可用于基于事件的通信。

    关于这个主题,我的第一个想法是,如果它是一个端到端测试,那么您应该忘记您使用的是哪个框架,因为这与此上下文中的实现有关。因此,我将创建一个测试项目,它本质上是一个docker compose文件,并为它定义了5个容器

    • 服务A
    • 服务B
    • 兔子
    • 也可能是数据库,除非你想坚持内存方式
    • 以及用于运行测试的单独容器
    从这个角度来看,您有两种处理特定于环境的配置的方法:

    • 您可以在单独的spring概要文件中定义特定于测试的配置,并通过在docker compose文件中定义env var来激活它
    • 在属性文件中传递配置,并将其装载到docker compose文件中
    测试运行程序可以保持简单,我会编写一个基于JUnit的测试套件,它使用Restasured或类似的东西

    我希望这能提供线索。当然,这是一个宽泛的话题,所以深入到每一个细节并不是一个很好的答案