如何使用mockrunner设置模拟队列来测试xml过滤器?

use*_*632 5 queue ejb jndi jms mockrunner

我正在使用来自http://mockrunner.sourceforge.net/的mockrunner包来为JUnit设置一个模拟队列来测试XML过滤器,其运行方式如下:

  1. 设置用于放置和获取xml输入的ftp服务器的已识别属性以及用于跟踪作业的jms队列服务器.远程等待服务器在收到队列消息后实际解析xml.
  2. 使用ftp创建一个远程目录,并使用mqconnectionfactory启动队列连接到队列服务器的给定地址.
  3. 一旦在2)中创建新队列条目,过滤器将等待出现新队列消息,表示远程服务器已完成作业.然后,过滤器从ftp中获取修改后的xml文件,并将其传递给下一个过滤器.

我正在进行的JUnit测试只需要通过启动本地ftp和模拟队列服务器来连接到过滤器来模拟这个环境,然后等待过滤器连接到队列并将新的xml输入文件放在本地目录中通过本地ftp服务器,等待队列消息,然后稍微修改xml输入,将修改后的xml放入新目录,并将另一条消息发送到队列,表示作业已完成.

我在网上找到的所有教程都使用EJB和JNDI来查找队列服务器.如果可能的话,我想通过在我的本地机器上创建一个模拟队列并以最简单的方式连接到它来避开该路由,而不是使用EJB和JNDI.

提前致谢!

Jam*_*han 2

我建议查看使用Apache Camel来创建测试用例。然后,从任何可用组件切换测试用例真的很容易,最重要的是,Camel 附带了一些非常方便的模拟端点,这使得测试复杂的路由逻辑变得非常容易,尤其是异步操作。

如果您也使用 Spring,那么可以首先在 Camel 中使用模拟端点尝试这些Spring 单元测试,它允许您注入模拟端点以与 ProducerTemplate 对象一起执行断言,从而非常容易地为您的测试用例触发消息。例如,请参阅该页面上的最后一个示例。

从使用简单的端点(例如SEDA 端点)开始- 然后当您了解核心 spring/mock 框架时,尝试使用JMS 端点FTP端点等。