Spring boot Spring cloud stream-集成测试,订户don';Don’不要听事情

Spring boot Spring cloud stream-集成测试,订户don';Don’不要听事情,spring-boot,spock,spring-cloud-stream,Spring Boot,Spock,Spring Cloud Stream,我正在努力用SpringCloudStream设置集成测试 假设我需要测试以下集成流 创建具有POST请求的实体 使用MessageBroker在内部发布事件 在同一微服务中收集事件并更新内部读取模型 向读取模型端点发出GET请求,并检查读取模型是否已更新 更新读取模型是异步工作的。它在运行应用程序时工作正常(收集并使用事件),在运行集成测试时不工作。标记为@StreamListener的方法在运行测试时不会被调用,应用程序不会事件连接到MessageBroker(在我的例子中是kafka) 我

我正在努力用SpringCloudStream设置集成测试

假设我需要测试以下集成流

  • 创建具有POST请求的实体
  • 使用MessageBroker在内部发布事件
  • 在同一微服务中收集事件并更新内部读取模型
  • 向读取模型端点发出GET请求,并检查读取模型是否已更新
  • 更新读取模型是异步工作的。它在运行应用程序时工作正常(收集并使用事件),在运行集成测试时不工作。标记为
    @StreamListener
    的方法在运行测试时不会被调用,应用程序不会事件连接到MessageBroker(在我的例子中是kafka)

    我使用了
    springcloudstreamtestsupport
    MessageCollector
    ,但它让我有机会检查事件是否已发布并验证其有效负载

    我需要的是检查应用程序是否收集了事件并对其做出了正确的反应


    我错过了什么?在测试运行期间,应用程序是否订阅了任何类型的测试活页夹?

    使用测试活页夹时,默认情况下,测试活页夹将覆盖Kafka活页夹

    要在与单元测试相同的项目中运行集成测试,必须通过排除
    TestSupportBinderAutoConfiguration
    将测试配置为使用真正的绑定器

    有关全局排除,请参阅

    有关单个测试中的排除,请参阅

    最后,您还可以使用
    spring.autoconfigure.exclude
    属性控制要排除的自动配置类的列表


    e、 g.在
    @TestPropertySource

    中,测试绑定器是否有办法将事件传递给订阅者?计划在更复杂的测试绑定器(未来版本)上进行一些工作。当前唯一可以做的事情是在测试用例中向
    @StreamListener
    的消息通道(例如
    Sink.input()
    )发送
    消息。