在哪里放置虚拟Web服务实现?

时间:2013-07-29 10:06:23

标签: java spring web-services testing

在当前项目中,我有以下架构:

  • 内部-PROJ
  • ^ Internal-Proj-Impl
  • 外部-PROJ
  • ^ External-Proj-Impl

内部项目定义了一个Web服务(界面在Internal-Proj中,显然在Impl中实现)。外部项目使用此Web服务。因此,从External-Proj-Impl到Internal-Proj存在依赖关系。

我们创建了一个实现WebService的WebServiceDummy类,并将用于External-Proj-Impl中的测试。问题是这个WebServiceDummy应该放在哪里?

  • 在External-Proj-Impl中:这不会创建新的依赖项。缺点:如果一个新项目也需要一个假人,它将不得不创建自己的。我也喜欢内部负责为他们的界面提供假人的想法,这不是这里的情况。
  • 在Internal-Proj中:这不需要新的依赖项,但这意味着在接口项目中有一个实现(尽管是虚拟的)。
  • 在Internal-Proj-Impl中:这是有道理的,因为虚拟是一个实现,而不是一个接口。然而,这意味着External-Proj-Impl现在依赖于Internal-Proj-Impl,这是不可接受的。

如果重要,我们正在使用Spring,这意味着我们在上下文中声明我们是使用真实实现,虚拟或Web服务客户端,然后注入。

这是最好的做法吗?

1 个答案:

答案 0 :(得分:2)

我将它与使用它的测试结合在一起,所以:

  

在External-Proj-Impl中:这不会创建新的依赖项。缺点:如果一个新项目也需要一个假人,它将不得不创建自己的。

关于缺点,不一定。您可以让其他项目使用“测试人工制品”(以Maven术语)。如果这些项目完全不相关,您可以启动一个新的“测试支持”项目(“内部项目测试”,仅依赖于Internal-Proj)。