我正在使用 http://mockrunner.sourceforge.net/中的模拟运行器包来设置一个模拟队列,用于 JUnit 测试一个 XML 过滤器,其操作如下:
- 为 FTP 服务器设置可识别的属性以放置和获取 XML 输入,以及设置跟踪作业的 JMS 队列服务器。远程等待服务器,该服务器在收到队列消息后实际解析 xml。
- 使用 FTP 创建一个远程目录,并使用 MQ连接工厂启动到队列服务器的给定地址的队列连接。
- 在 2) 中创建新队列条目后,过滤器将等待出现新的队列消息,表示远程服务器已完成作业。然后,过滤器从 ftp 中获取修改后的 xml 文件,并将其传递给下一个过滤器。
我正在做的 JUnit 测试只需要模拟这个环境,启动一个本地 ftp 和模拟队列服务器让过滤器连接到,然后等待过滤器连接到队列并通过本地 ftp 服务器将新的 xml 输入文件放在本地目录中,等待队列消息,然后稍微修改 xml 输入, 将修改后的 XML 放在新目录中,并将另一条消息发布到队列中,表示作业已完成。
我在网上找到的所有教程都使用 EJB 和 JNDI 在队列服务器完成后对其进行查找。如果可能的话,我想通过在本地机器上创建一个模拟队列并以最简单的方式连接到它来避开这条路由,而不是使用 EJB 和 JNDI。
提前感谢!
我正在使用 MockEjb,其中有一些使用模拟队列的示例,因此请查看信息和示例希望它有所帮助。
我建议看看使用Apache Camel来创建你的测试用例。然后,从任何可用组件切换测试用例非常容易,最重要的是,Camel带有一些非常方便的模拟端点,这使得测试复杂的路由逻辑变得非常容易,尤其是异步操作。
如果你也使用Spring,那么也许可以从在Camel中尝试这些带有模拟端点的Spring单元测试开始,它允许你注入模拟端点以与ProducerTemplate对象一起执行断言,以便非常容易地为测试用例触发消息。
从简单的端点(如SEDA端点)开始 - 然后当你了解核心弹簧/模拟框架时,尝试使用JMS端点或FTP端点端点等。