5

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

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

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

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

提前致谢!

4

2 回答 2

3

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

于 2008-10-22T10:55:13.913 回答
2

我建议看看使用Apache Camel来创建您的测试用例。然后很容易从任何可用组件切换您的测试用例,最重要的是,Camel 带有一些非常方便的Mock Endpoints,这使得测试复杂的路由逻辑变得非常容易,特别是使用异步操作。

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

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

于 2008-10-01T16:20:46.023 回答