一般的大家可能认为mq不好做单元测试,但其实官方对此有很好的支持,写起来非常方便。
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
<version>${spring.cloud.stream.version}</version>
<type>test-jar</type>
<scope>test</scope>
<classifier>test-binder</classifier>
</dependency>
如果用了版本管理插件,版本可以省略。
如果之前添加了spring-cloud-stream-test-support
依赖,需要先删除,避免冲突。
单元测试
@SpringBootTest
@Import({TestChannelBinderConfiguration.class})
public class AuthChangeListenerTests {
@Resource
private InputDestination source;
/**
* 测试mq
*/
@Test
public void testAuthChanged() {
//发送一条消息到交换机des
source.send(new GenericMessage<>("{}".getBytes()),"des");
//可以立即对消息处理结果进行判断,上一步会处理完再往下运行
assert ...
}
}
上面的单元测试与 spring cloud stream 3.0 – 生产者消费者例子 对应