繁体   English   中英

测试 JMS 消息监听器

[英]Testing a JMS MessageListener

我不确定如何测试消息侦听器。 一件事是我收到的错误。 另一个是我什至不知道我是否走在正确的轨道上。

class TestListenerTest extends Specification {


    def "TestListener should receive a message"() {
        given:
        Message message = Mock ( Message )
        TestListener listener = new TestListener()

        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory()
        JmsTemplate jmsTemplate = new JmsTemplate( connectionFactory )

        when:
        jmsTemplate.convertAndSend( "TEST_QUEUE_IN", message )

        then:
        1 * listener.onMessage( message )
    }
}

我收到以下错误:

AMQ229031: Unable to validate user from /127.0.0.1:53051. Username: null; SSL certificate subject DN: unavailable;

当我使用connectionFactory.createContext( "userName", "password")添加JMSContext时,错误仍然存在,只是使用userName而不是null 但是,我什至不确定我的测试方式是否正确(除非出错)。

关于您的 ActiveMQ 问题,我不能说任何话,因为我以前从未使用过该产品,而且您没有提供MCVE (例如在 GitHub 上)来重现它。

我能说的是,你的 Spock 测试永远不会像这样工作:

given:
TestListener listener = new TestListener()

// (...)

then:
1 * listener.onMessage( message )

您只能验证模拟或间谍上的交互,但您可以像普通的 object 一样实例化listener器。 所以如果你想检查监听器是否真的被调用了,你需要模拟它或监视一个实例。 此外,在我看来,听众似乎并没有被连接到系统中。 那么它是如何知道该听什么的呢? 也许您已经将接线隐藏在 class TestListener内部(听起来有点奇怪),但我无法知道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM