【问题标题】:Design for using a mock connection使用模拟连接的设计
【发布时间】:2009-10-26 11:32:04
【问题描述】:

我有一个带有后端连接的 UI 的简单应用程序,我从中获取数据。现在,在开发过程中,我不想连接到后端,因为它会减慢我的速度。所以,我有一些本地存储的数据,我“模拟”连接以返回本地存储的数据,而不是进行服务器调用。

现在,这不是用于编写测试用例(因此,我看不到模拟框架是否出现在图片中),而只是能够在开发过程中在本地和远程连接之间切换。

我想有很多方法可以做到这一点:

  • 从一个 工厂(或通过依赖注入) 并设置一个返回的标志 本地连接
  • 维护一个 属性文件,我在哪里设置 'local=true' 或类似的东西 返回本地连接。

还有其他方法可以实现吗?

【问题讨论】:

标签: java mocking


【解决方案1】:

不要让事情过于复杂。显然需要返回不同的实现 - 所以使用工厂。然后工厂需要知道要创建哪个实现。您可以使用属性,甚至可以使用静态布尔变量。

【讨论】:

    【解决方案2】:

    问题有两个方面:

    1. 应用程序从哪里获得连接?工厂?管理 DI 的聪明注释? ...
    2. 连接源如何确定使用哪一个、模拟哪一个,或者可能是几种不同的 live 变体(Prod、ST、Dev 等)

    对于前者,其他地方有大量关于 DI 技术的讨论。我更喜欢那些也很容易启用单元测试的方法——我发现 DI 在这种情况下很有用。

    至于可能使用的任何属性/配置,这取决于您拥有的环境类型。你没有说你是一个独立的 Java 应用程序还是在 JEE 环境中运行的东西。如果是后者,那么使用 JNDI 资源可能会有用。

    【讨论】:

      【解决方案3】:

      当我偶尔需要使用时,例如本地数据库而不是网络上的生产数据库我编辑我的

      /etc/hosts

      这样生产数据库的名称就会转为我自己的本地主机。又快又脏。

      【讨论】:

        【解决方案4】:

        您是否研究过依赖注入框架?

        我已经使用Google Guice 来处理这个确切的问题。

        【讨论】:

          猜你喜欢
          • 2011-12-12
          • 2011-08-01
          • 1970-01-01
          • 2011-08-15
          • 1970-01-01
          • 1970-01-01
          • 2012-09-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多