如何使用模拟运行器设置模拟队列以测试xml过滤器?

时间:2020-03-06 14:58:53  来源:igfitidea点击:

我正在使用来自http://mockrunner.sourceforge.net/的mockrunner程序包来设置模拟队列,以供JUnit测试运行如下所示的XML过滤器:

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

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

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

提前致谢!

解决方案

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

如果我们还使用Spring,那么也许可以从在Camel中使用模拟端点测试这些Spring单元测试开始,让我们注入模拟端点与ProducerTemplate对象一起执行断言,从而非常轻松地为测试用例触发消息。例如请参阅该页面上的最后一个示例。

首先使用SEDA终结点之类的简单终结点,然后围绕核心spring / mock框架开始尝试使用JMS终结点或者FTP终结点终结点等。

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