【问题标题】: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 基本身份验证。
【问题讨论】:
标签:
java
spring-cloud
spring-cloud-stream
spring-cloud-config
spring-cloud-bus
【解决方案1】:
Spring-cloud-bus 是一种让多个应用程序节点进行通信的机制,提供了广播事件的能力。
这种通信到位,应用程序可以使用它,例如,以动态方式从 configuration-server 获取配置(配置更改将导致广播适当的事件)。
因此,在测试此类应用程序时,测试必须首先提供 configuration-server 以从中获取配置,因此您链接的示例中的 startConfigServer() 方法.
Spring blog 引用 spring-cloud-stream-test-support 来简化对这种消息传递抽象的测试,但我自己没有使用过。
不过,另一种测试方法是模拟对这个 configuration-server 的所有访问(通过 HTTP 和 spring -cloud-stream 底层代理)。
这是一个example of all the mocking stuff(使用RabbitMQ,但想法与Kafka相同)。
测试 配置服务器 正好相反(修改配置文件并断言消息已在底层代理上发布)。
作为记录,我不确定 spring-cloud-bus 是否可以与 Kafka 一起使用,因为官方文档说仅支持 AMQP (0.9):https://spring.io/projects/spring-cloud-bus