我有一个类,它在完成某些操作后发送一条 JMS 消息。
我想对“东西”进行单元测试,但不一定是消息的发送。
当我运行我的测试时,“东西”绿色条,但发送消息时失败(应该是,应用程序服务器未运行)。
最好的方法是什么,是模拟消息队列,如果是,那是怎么做到的。
我正在使用 Spring,注入(inject)了“jmsTemplate”和“queue”。
最佳答案
我会使用的最简单的答案是取消消息发送功能。例如,如果你有这个:
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 ) );
}
如果被删减或模糊的代码量很大,我不会使用匿名内部类,而只是使用“普通”内部类。
关于java - 发送 JMS 消息的单元测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335621/