为啥 spring-cloud-config 示例测试需要旋转配置服务器?

Posted

技术标签:

【中文标题】为啥 spring-cloud-config 示例测试需要旋转配置服务器?【英文标题】:Why spring-cloud-config sample test needs to spin a config-server?为什么 spring-cloud-config 示例测试需要旋转配置服务器? 【发布时间】:2018-12-16 19:18:43 【问题描述】:

我想为我的配置服务器编写单元/集成测试,所以我检查了this 链接。有一个用@SpringBootTest 注释的类,还有一个用@BeforeClass 注释的函数startConfigServer()。为什么需要这个函数,因为有 @SpringBootTest 注释?

我还可以为配置服务器编写哪些其他单元测试用例和集成测试?我还在使用 Spring Cloud Stream Kafka 和 Spring Cloud Bus,并启用了 Spring Security 基本身份验证。

【问题讨论】:

【参考方案1】:

Spring-cloud-bus 是一种让多个应用程序节点进行通信的机制,提供了广播事件的能力。 这种通信到位,应用程序可以使用它,例如,以动态方式从 configuration-server 获取配置(配置更改将导致广播适当的事件)。

因此,在测试此类应用程序时,测试必须首先提供 configuration-server 以从中获取配置,因此您链接的示例中的 startConfigServer() 方法.

Spring blog 引用 spring-cloud-stream-test-support 来简化对这种消息传递抽象的测试,但我自己没有使用过。

不过,另一种测试方法是模拟对这个 configuration-server 的所有访问(通过 HTTPspring -cloud-stream 底层代理)。

这是一个example of all the mocking stuff(使用RabbitMQ,但想法与Kafka相同)。

测试 配置服务器 正好相反(修改配置文件并断言消息已在底层代理上发布)。

作为记录,我不确定 spring-cloud-bus 是否可以与 Kafka 一起使用,因为官方文档说仅支持 AMQP (0.9):https://spring.io/projects/spring-cloud-bus

【讨论】:

以上是关于为啥 spring-cloud-config 示例测试需要旋转配置服务器?的主要内容,如果未能解决你的问题,请参考以下文章

spring-cloud-config——Quick Start

问题 spring-cloud-config 和 spring-cloud-bus

spring-cloud-config 配置中心快速上手

重命名 spring-cloud-config 原生配置文件

使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?

在 Docker 中将 Spring-cloud-config 服务器托管为微服务