代码之家  ›  专栏  ›  技术社区  ›  aeh

合成对可测试性不坏吗?[关闭]

  •  3
  • aeh  · 技术社区  · 16 年前

    一般来说,组合和聚合是一样的?但是它们是不同的,使用哪一个改变很大? 例如:

    我相信聚合是测试的理想选择。但构图不是。

    那么,有没有类似的观点呢?选择哪一个,应该仅仅基于“部分”和“has-a”。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Potatoswatter    16 年前

    聚合,即指向,has-a-handle,比组合(即包含)具有更多的自由度。

    聚合可能出错的地方:子对象被破坏得太快,它泄漏,链接从未建立,另一个对象认为它拥有独占所有权并修改了它。

    一般来说,更喜欢构图。

    这个 易写性 试验次数 必须有良好的覆盖面。如果您的测试策略导致您做出增加故障模式的设计决策,那么它将反向工作。

    单元测试显然不会暴露集成中的缺陷。您最好使用客户机对象上的测试子集测试子对象。记录每个测试如何将特定行为委托给子对象,以及如何在其自然环境中对其进行有效和准确的测试。

    当然,我知道有很多管理者会有不少于1000行的代码,这些代码除了绑定和破坏整个设计之外什么也不做。

        2
  •  0
  •   Chubsdad    16 年前

    我的职位的定义如下 here ,因为关联、聚合和组合有多个定义。

    我觉得每个人都有自己的用途:

    组合:由组合设计模式使用

    关联:由许多设计模式使用,例如Observer

    它实际上是上下文相关的。

    谈到测试,我认为测试更松散耦合的组件更容易。聚合促进的设计相对来说比基于聚合的设计更容易耦合。因为测试需要用实验/测试提供的对象配置代码组件。我想说的是,聚合更好。您可以灵活地使用不同的测试对象配置对象。

        3
  •  0
  •   Clifford    16 年前

    如果您对构成组合的元素进行单元测试以演示独立的正确性,那么在测试组合单元时,您只需要测试组合单元的功能,而不必担心应用于组合元素的测试覆盖率。