bmw*_*128 3 java spring unit-testing jms jmstemplate
我有一个类,在它执行一些操作后,发送一条JMS消息.我想对"东西"进行单元测试,但不一定是发送消息.
当我运行我的测试时,"东西"绿色条,但在发送消息时失败(它应该,应用服务器没有运行).执行此操作的最佳方法是,是否模拟消息队列,如果是这样,如何完成.
我正在使用Spring,并注入"jmsTemplate"和"queue".
我将使用的最简单的答案是删除消息发送功能.例如,如果你有这个:
public class SomeClass {
public void doit() {
//do some stuff
sendMessage( /*some parameters*/);
}
public void sendMessage( /*some parameters*/ ) {
//jms stuff
}
}
Run Code Online (Sandbox Code Playgroud)
然后我会编写一个模糊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 ) );
}
Run Code Online (Sandbox Code Playgroud)
如果被删除或隐藏的代码量很大,我不会使用匿名内部类,而只使用"普通"内部类.
你可以注入一个模拟的jmsTemplate.
假设easymock,就像
JmsTemplate mockTemplate = createMock(JmsTemplate.class)
Run Code Online (Sandbox Code Playgroud)
那就行了.
| 归档时间: |
|
| 查看次数: |
22244 次 |
| 最近记录: |