有没有办法在 JUnit 测试中使用 JMS?

Is there a way to use JMS in a JUnit test?

我想 运行 使用 JMS 进行 JUnit 测试。是否可以让 JUnit 测试在应用服务器(如 JBoss 或 CDI 容器)之外使用 JMS?

只要消息的发送和消费与 JMS 完全解耦,您就可以模拟它。

例如:您可以有一个 class 来实现类似 "IMyClassSender" 的接口。在实际代码(非 junit)中,class 所做的只是将消息提交给 JMS。在 junit 中,使用接受输入的 class 实现 IMyClassSender,如果提交给 JMS,它将传递给您的消费者 class。

或者,如果您使用的是主动 mq:http://activemq.apache.org/how-to-unit-test-jms-code.html

您也可以重新考虑为此使用应用服务器 - Arquillian (http://arquillian.org) 允许在您选择的 JavaEE 环境中执行单元和集成测试 - 并自行管理应用服务器生命周期。