【问题标题】:TDD. I have quite complex coding exercise, do I test private methods if they are very complex? [duplicate]TDD。我有相当复杂的编码练习,如果私有方法非常复杂,我会测试它们吗? [复制]
【发布时间】:2016-03-23 07:34:55
【问题描述】:

TDD。我有相当复杂的编码练习,如果私有方法非常复杂,我会测试它们吗?

所以我的类只公开了一个公共方法,但包含的非常复杂的方法很少,我认为应该对其进行测试?

有疑问:我是否测试它们?

【问题讨论】:

  • “我的课程只公开一个公共方法”是什么意思?你怎么知道的?你不是先写测试吗?
  • 我准备重写它作为练习。

标签: unit-testing testing tdd


【解决方案1】:

如果您正在执行 TDD,那么物理上应该不可能达到您拥有“非常复杂”的私有方法的地步。 TDD的第三阶段是“重构”。当你实现特性时,你会不断地把东西拆开、分解、提取方法、类等等,这样你就可以避免以神秘的方式做 100000 件事情的上帝对象。

在处理遗留代码中的此类类时(这是一个可以写整本书的主题(而且人们有)),通常认为进行最少的重构以使代码在所有可测试的(不诉诸反射和类似的丑陋黑客)。然后你用测试覆盖代码,直到你相当有信心可以开始对其进行更改而不会违反合同。

此时,您可以开始重构、分解、提取和疯狂,直到您拥有更易于管理的东西。

底线是:,不要测试私有方法。它会导致难以理解的脆弱测试,并且只会巩固糟糕的设计,而不是帮助您获得更好的设计(TDD 的明确目标之一)。

即使您认为“最好现在快速获得覆盖,我可以稍后修复它”,不,这不值得。这是一笔巨大的技术债务,您将在未来 10 年内无法偿还。实在是太麻烦了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多