SpringCloud 测试
2023-11-28 15:54 更新
Spring Cloud Stream提供了在不连接消息传递系统的情况下测试您的微服务应用程序的支持。您可以使用spring-cloud-stream-test-support
库提供的TestSupportBinder
库来完成此操作,该库可以作为测试依赖项添加到应用程序中,如以下示例所示:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-test-support</artifactId> <scope>test</scope> </dependency>
TestSupportBinder
使用Spring Boot自动配置机制来取代在类路径上找到的其他绑定器。因此,在添加活页夹作为依赖项时,必须确保使用了test
范围。
TestSupportBinder
使您可以与绑定的频道进行交互,并检查应用程序发送和接收的所有消息。
对于出站消息通道,TestSupportBinder
注册一个订户,并将应用程序发出的消息保留在MessageCollector
中。在测试期间可以检索它们,并针对它们进行断言。
您还可以将消息发送到入站消息通道,以便使用者应用程序可以使用消息。以下示例显示了如何在处理器上测试输入和输出通道:
@RunWith(SpringRunner.class) @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT) public class ExampleTest { @Autowired private Processor processor; @Autowired private MessageCollector messageCollector; @Test @SuppressWarnings("unchecked") public void testWiring() { Message<String> message = new GenericMessage<>("hello"); processor.input().send(message); Message<String> received = (Message<String>) messageCollector.forChannel(processor.output()).poll(); assertThat(received.getPayload(), equalTo("hello world")); } @SpringBootApplication @EnableBinding(Processor.class) public static class MyProcessor { @Autowired private Processor channels; @Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) public String transform(String in) { return in + " world"; } } }
在前面的示例中,我们创建了一个具有输入通道和输出通道的应用程序,两者均通过Processor
接口绑定。绑定的接口被注入到测试中,以便我们可以访问两个通道。我们在输入通道上发送一条消息,然后使用Spring Cloud Stream的测试支持提供的MessageCollector
捕获消息已作为结果发送到输出通道。收到消息后,我们可以验证组件是否正常运行。
以上内容是否对您有帮助:
更多建议: