JUnit测试RabbitMQ

java spring junit spring-amqp spring-rabbit

6495 观看

3回复

832 作者的声誉

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

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

提前致谢

作者: Luca Stucchi 的来源 发布者: 2015 年 1 月 19 日

回应 (3)


6

6888 作者的声誉

决定

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

作者: asthasr 发布者: 19.01.2015 12:40

3

83358 作者的声誉

我们广泛使用模拟来进行框架本身的测试; 探索想法的测试。它的RabbitTemplate侧面并不算太糟糕,但是对于监听器容器的嘲弄更为复杂。

但是,在某些情况下,需要进行真正的集成测试,在这种情况下@Rule,如果没有本地rabbitmq代理,我们会使用JUnit 来忽略测试。

作者: Gary Russell 发布者: 19.01.2015 03:10

1

383 作者的声誉

要在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());
    }
}

希望这会有所帮助!

作者: Loïc Le Doyen 发布者: 28.01.2019 07:54
32x32