0

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

  • 内部项目
  • ^ 内部项目实施
  • 外部项目
  • ^ 外部项目实施

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

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

  • 在 External-Proj-Impl 中:这不会创建新的依赖项。缺点:如果一个新项目也需要一个 dummy,它必须创建自己的。我也喜欢 Internal 负责为其接口提供虚拟对象的想法,这里不会出现这种情况。
  • 在 Internal-Proj 中:这不需要新的依赖项,但这意味着在接口项目中有一个实现(尽管是一个虚拟的)。
  • 在 Internal-Proj-Impl 中:这是有道理的,因为 dummy 是实现而不是接口。然而,这意味着 External-Proj-Impl 现在依赖于 Internal-Proj-Impl,这是不可接受的。

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

对此有最佳做法吗?

4

1 回答 1

2

我会把它和使用它的测试放在一起,所以:

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

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

于 2013-07-29T10:18:39.043 回答