当前位置:  开发笔记 > 编程语言 > 正文

单元测试发送JMS消息的代码

如何解决《单元测试发送JMS消息的代码》经验,为你挑选了2个好方法。

我有一个类,在它执行一些操作后,发送一条JMS消息.我想对"东西"进行单元测试,但不一定是发送消息.

当我运行我的测试时,"东西"绿色条,但在发送消息时失败(它应该,应用服务器没有运行).执行此操作的最佳方法是,是否模拟消息队列,如果是这样,如何完成.

我正在使用Spring,并注入"jmsTemplate"和"queue".



1> Alex B..:

我将使用的最简单的答案是删除消息发送功能.例如,如果你有这个:

public class SomeClass {
    public void doit() {
        //do some stuff
        sendMessage( /*some parameters*/);
    }

    public void sendMessage( /*some parameters*/ ) { 
        //jms stuff
    }
}

然后我会编写一个模糊sendMessage行为的测试.例如:

@Test
public void testRealWorkWithoutSendingMessage() {
    SomeClass thing = new SomeClass() {
        @Override
        public void sendMessage( /*some parameters*/ ) { /*do nothing*/ }
    }

    thing.doit();
    assertThat( "Good stuff happened", x, is( y ) );
}

如果被删除或隐藏的代码量很大,我不会使用匿名内部类,而只使用"普通"内部类.



2> tunaranch..:

你可以注入一个模拟的jmsTemplate.

假设easymock,就像

JmsTemplate mockTemplate = createMock(JmsTemplate.class)

那就行了.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有