【问题标题】:Suggestions for mocking an XMPP server [closed]模拟 XMPP 服务器的建议 [关闭]
【发布时间】:2011-10-10 19:21:56
【问题描述】:

出于测试目的,我需要模拟 XMPP 服务器。我目前的意图是运行本地 XMPP 服务器并在那里绑定我的测试代码,但我想知道是否有人知道已经存在的 XMPP 模拟库?

【问题讨论】:

  • 我不知道这是否有用,但是在Growing Object Oriented Software, Guided by Tests这本书上作者给出了一个测试使用XMPP的应用程序的示例,他们选择启动一个OpenFire服务器,而不是模拟它.如果可以,请获取一份副本,因为他们还谈论了很多关于如何测试异步应用程序的内容......而且它非常非常很好。

标签: tdd mocking xmpp integration-testing


【解决方案1】:

这可能在某种程度上取决于您使用的工具,但是在 Smack 中,例如,您可以创建自己的 Connection 类,该类将用作模拟服务器。这是在 Smack 的测试用例中完成的。

基本上,您将回复 IQ 或消息数据包输入连接,然后通过 API 进行调用。然后将预设数据包作为结果返回。您必须考虑的一件事是 XMPP 的异步特性,并确保您的测试服务器将以相同的方式工作。

其他 XMPP 库可能会提供一些类似的方法来启用单元测试。

另一方面,如果您尝试运行完整的集成测试场景,那么我认为本地服务器是正确的选择。

【讨论】:

    【解决方案2】:

    要成功模拟整个 XMPP 服务器,您基本上最终会得到... XMPP 服务器。我个人认为这是整体测试最可靠的方法,尽管我对独立的代码片段使用更小更具体的测试。

    你可能会觉得这本书的章节很有趣,Remko 可能是我认识的最痴迷于测试的人,它是根据他自己最近开发客户的经验写成的:http://el-tramo.be/blog/beautiful-xmpp-testing

    【讨论】:

    【解决方案3】:

    只有您拥有的 Mock 类型 - 搜索 Freeman n co. 的这篇文章。

    这个想法是你应该只模拟你控制的角色。在这种情况下,XMPP 服务器的接口不是您可以控制的。因此,请定义您的应用需要的角色(接口)并且 XMPP 服务器可以满足该角色(接口)。

    您最终可能会得到一个更简单的界面 - 例如。发送到(用户,消息)。然后,您需要编写一个适合 XMPP 服务器角色的适配器。这个东西将处理与您选择 XMPPServer 相关的所有古怪问题。

    这个更简单的界面更容易模拟和灵活更改。高温

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 2012-03-17
      • 2012-01-27
      • 1970-01-01
      • 2010-11-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      相关资源
      最近更新 更多