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

时间:2008-10-01 15:24:44

标签: queue jms ejb jndi mockrunner

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

  1. 设置用于放置和获取xml输入的ftp服务器的已识别属性以及用于跟踪作业的jms队列服务器。远程等待服务器在收到队列消息后实际解析xml。
  2. 使用ftp创建一个远程目录,并使用mqconnectionfactory启动队列连接到队列服务器的给定地址。
  3. 在2)中创建新队列条目后,过滤器将等待显示新队列消息,表示远程服务器已完成作业。然后,过滤器从ftp中获取修改后的xml文件,并将其传递给下一个过滤器。
  4. 我正在进行的JUnit测试只需要通过启动本地ftp和模拟队列服务器来连接到过滤器来模拟这个环境,然后等待过滤器连接到队列并将新的xml输入文件放在上面通过本地ftp服务器的本地目录,等待队列消息,然后稍微修改xml输入,将修改后的xml放入新目录,并将另一条消息发送到队列,表示作业已完成。

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

    提前致谢!

2 个答案:

答案 0 :(得分:3)

我正在使用MockEjb,其中有一些示例用于使用模拟队列,因此请查看infoexample 希望它有所帮助。

答案 1 :(得分:2)

我建议您使用Apache Camel来创建测试用例。然后很容易从available components中切换你的测试用例,最重要的是Camel附带了一些非常方便的Mock Endpoints,这使得测试复杂的路由逻辑非常容易,尤其是异步操作。

如果你也使用Spring,那么可以先尝试一下这些Spring unit tests with mock endpoints in Camel,它允许你注入模拟端点来与ProducerTemplate对象一起执行断言,以便为你的测试用例发送消息非常容易。例如请参阅该页面上的最后一个示例。

开始使用像SEDA endpoint这样的简单端点 - 然后当您了解核心弹簧/模拟框架时,请尝试使用JMS endpointFTP endpoint端点等。< / p>