设计使用模拟连接

时间:2009-10-26 11:32:04

标签: java mocking

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

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

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

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

还有其他方法可以达到这个目的吗?

4 个答案:

答案 0 :(得分:1)

问题有两半:

  1. 应用从哪里获得连接?厂?管理DI的聪明注释? ...
  2. 连接源如何确定使用哪一个,模拟或可能的几个不同的live变体(Prod,ST,Dev等)
  3. 对于前者,其他地方有很多关于DI技术的讨论。我也赞成也可以轻松启用单元测试的方法 - 我发现DI在这种情况下很有用。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

/etc/hosts

以便生产数据库的名称依赖于我自己的本地主机。又快又脏。

答案 3 :(得分:0)

您是否已查看依赖注入框架?

我已使用Google Guice来处理这个问题。