2013-07-29 73 views
0

在当前项目中,我有以下结构:在哪里可以放置虚拟Web服务实现?

  • 内部-PROJ
  • ^内部-PROJ-默认地将Impl
  • 外部-PROJ
  • ^外部-PROJ-默认地将Impl

内部项目定义了一个Web服务(接口在Internal-Proj中,显然是在Impl中的实现)。外部项目使用此Web服务。因此,External-Proj-Impl对Internal-Proj有依赖性。

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

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

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

对此有最佳做法吗?

+0

把它与使用它的测试。 – 2013-07-29 10:13:42

回答

2

我把它连同使用它的测试,所以:

在外部-PROJ-默认地将Impl:这不会产生一个新的依赖。下行:如果一个新项目也需要一个假人,它将不得不自己创建。

简而言之,不一定。您可以让其他项目使用“测试工件”(以Maven术语来说)。如果这些项目完全不相关,那么可以启动一个新的“测试支持”项目(“Internal-Proj-Testing”,仅依赖于Internal-Proj)。

相关问题