首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SRP使得类很难测试

SRP使得类很难测试
EN

Stack Overflow用户
提问于 2012-08-03 03:57:17
回答 2查看 598关注 0票数 3

在重构一些旧的遗留代码时,我试图尽可能多地应用单一责任原则,因此我最终得到了许多只有一个目的的类。这很好,但是当我试图为这些新类编写单元测试时,问题就来了。有些类真的很难测试,因为测试很难设置。我需要创建4-5个mock/stub来编写一个测试用例,如果我想要覆盖所有代码,我需要编写几个测试用例,所以这只是一个麻烦。

难于设置测试(因为它依赖于许多其他类)是一种代码味道吗?你怎么解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-03 04:50:17

下面是Uncle Bob says about SRP的内容

一个类应该有且只有一个更改的原因。

请注意,它并没有说“一个类做一件事,而且只做一件事”。换句话说,如果除了一个责任之外的所有责任都是不变的,或者如果它们都将一起改变,那么一个类具有多个责任是完全有效的。

在他的Agile Patterns, Principles, and Practices书中,鲍勃叔叔说:

在SRP的上下文中,我们将责任定义为更改的原因(117)。

和:

另一方面,如果应用程序没有以导致多个职责在不同时间发生变化的方式进行更改,则没有必要将它们分开。实际上,将它们分开会让人感觉到不必要的复杂性。(118)

也就是说,有太多合作者的类是一种气味,应该仔细检查。

票数 3
EN

Stack Overflow用户

发布于 2012-08-03 04:34:30

  • 你不需要覆盖所有的代码,在小类中使用常识
  • 应该很容易确定不变量,所以用断言填充它们,让代码自己测试
  • 将系统分成几层,并定义可以插入模拟刺激的位置,以使这些断言起作用并验证输出
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11784836

复制
相关文章

相似问题

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