首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >组合不是对可测试性不好吗?

组合不是对可测试性不好吗?
EN

Stack Overflow用户
提问于 2010-09-06 15:23:16
回答 3查看 504关注 0票数 3

通常情况下,组合和聚合是一样的吗?但是它们是不同的,选择使用哪一个会有很大的变化?例如:

我相信聚合将是测试的理想选择。但组合并非如此。

在使用聚合但较少使用组合时,维护依赖关系是一件痛苦的事情。

那么对此有没有类似的看法呢?应该选择哪一个,应该只基于"part-of“和"has-a”。

EN

回答 3

Stack Overflow用户

发布于 2010-09-06 15:35:03

聚合,即指向,具有句柄,比合成,即包含,具有更多的自由度。

聚合可能会出错的事情:子对象太快被销毁,它泄漏,链接从未建立,另一个对象认为它拥有独占所有权并修改它。

通常,组合更容易让编译器检查(比如在C++中),也更容易检查,因为可能的未初始化状态更少,损坏的可能方式也更少。

通常情况下,首选组合。

编辑:编写测试的简易性不如良好覆盖率所需的测试数量重要。如果您的测试策略导致您做出增加故障模式的设计决策,那么它的作用是相反的。

值得注意的是,单元测试不会暴露集成中的缺陷。您最好通过在客户端对象上进行一组测试来测试子对象。记录每个测试如何将特定行为委派给子对象,以及如何在其自然环境中有效而准确地测试它。

当然,我知道有很多经理不会少于1000行笨手笨脚的代码,除了捆绑和破坏整体设计之外,什么也不做。

票数 2
EN

Stack Overflow用户

发布于 2010-09-06 16:15:51

我的帖子的定义是按照here的,因为有多个关于关联、聚合和组合的定义。

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

聚合:由对象适配器设计模式使用

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

关联:被许多设计模式使用,例如观察者

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

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

票数 0
EN

Stack Overflow用户

发布于 2010-09-06 17:31:09

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

这就是说,如果你测试自下而上,可能没有关于可测试性的问题。在测试组合元素时,您需要将组合单元存根(使用测试工具),而不是相反。然后,组合单元的测试将使用具体单元而不是存根。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3649709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档