JUnit测试RabbitMQ

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (323)

我正在使用带有Spring的RabbitMQ构建一个应用程序:到目前为止一直很好。定义单元测试我使用JUnit定位外部服务器。我想知道的是,是否有办法模拟RabbitMQ服务器来执行测试,如果有一种方法,那就是最好的方法。

我发现了一些帖子,但它们是在2012年甚至之前制作的......也许有更新,更容易,更有效的东西!

提前致谢

提问于
用户回答回答于

我不会试图模仿RabbitMQ服务器本身; 相反,模拟您的发布方法,渠道工厂等,以模拟错误条件(当然,还有快乐的路径)。例如,当你的FoozleEvent.publish方法抛出时会发生什么IOError

用户回答回答于

要在Java世界中模拟RabbitMQ,我正在构建一个库:rabbitmq-mock。目的正是您描述的用例。您可以简单地替换amqp-client, ConnectionFactory并且您将拥有开箱即用的大多数RabbitMQ功能,而无需使用IO(无需端口绑定)且无需启动时间。

只需在pom.xml中添加dependendy :

<dependency>
    <groupId>com.github.fridujo</groupId>
    <artifactId>rabbitmq-mock</artifactId>
    <version>1.0.10</version>
    <scope>test</scope>
</dependency>

然后,您可以通过替换通过Spring配置提供的ConnectionFactory或Spring-Boot为您提供的内容来使用它:

@Configuration
@Import(AppConfiguration.class)
class TestConfiguration {
    @Bean
    ConnectionFactory connectionFactory() {
        return new CachingConnectionFactory(new MockConnectionFactory());
    }
}

希望这会有所帮助!

扫码关注云+社区

领取腾讯云代金券