ser*_*nni 21 java provider jms mocking message-queue
有一条消息(文本),我确定知道哪种格式和内容.
现在,实现了Java中用于从文件中解析和读取此消息的类.
在现实世界中,此消息将来自Message Queue.
现在我应该在我的本地PC上模拟,模拟或生成Message Queue以进行测试.
Java规范(java jms):
JMS provider: A messaging system that implements the JMS specification.
JMS clients: Java applications that send and receive messages.
Messages: Objects that are used to communicate information between JMS clients.
Run Code Online (Sandbox Code Playgroud)
关于这个规范,我需要JMS提供者.
JMS客户端 - 这是我读取消息的类.
消息本身我知道.
那么问题是如何启动消息队列?
我如何从Java代码中以programmaticaly方式模拟它?我能以某种方式嘲笑它吗?
谢谢.
要在真正的生产 JMS 提供程序不可用时单独测试应用程序,您可以使用以下方法之一:
JMS 模拟:
在测试应用程序时,您可以使用test doubles模拟不存在的依赖项。您可以使用 JMS 模拟来模拟真实 JMS 提供程序的行为。API 模拟工具将允许您创建 JMS模拟(只需选择支持 JMS 的工具,例如Traffic Parrot)。使用 JMS 模拟将使您在测试期间具有高度的灵活性。通过设置模拟以返回几乎任何类型的消息,您将能够测试典型的类似生产的测试场景以及假设的情况。您还可以模拟不同类型的错误,这对于真正的 JMS 提供者来说通常是很难做到的。看一下此介绍视频用于 ActiveMq(服务虚拟化是模拟的不同名称)或IBM MQ 的JMS 服务虚拟化。请注意,这些视频来自 Traffic Parrot,但其中描述的原则适用于您选择的任何工具。
JMS 提供程序测试实例:
您可以在您的笔记本电脑或您的测试环境之一中运行 JMS 提供程序,并将您的应用程序连接到它而不是生产提供程序。当您在生产中使用 ActiveMQ 或 RabbitMQ 等开源提供程序时,在您的笔记本电脑上运行其中之一应该也很容易,因为它们是轻量级且免费的。对于 IBM Websphere MQ,您可以使用免费的IBM MQ for Developers。
JMS 类模拟:
您可以在单元测试中使用Mockito来模拟与 JMS 类的交互。该解决方案伴随着单元测试的所有权衡。有关这些的更多信息,请参阅测试金字塔。
如果您想对您的应用程序进行黑盒测试,请使用我上面描述的解决方案之一。
如果您使用Spring Integration,则可以非常轻松地完成此操作.它有一个非常基本的抽象"通道"实现.您可以创建和测试您的生产者和消费者,当您准备好进一步前进时,您只需在Channel上指定一个JMS适配器.