【发布时间】:2011-08-02 16:25:05
【问题描述】:
这是对this question 的部分跟进。
我不确定问这个问题的最佳方式,所以我会尝试一个短篇故事来设置场景:
曾几何时,有一个类“A”,它有一个单元测试类“ATests”,负责通过公共接口测试其行为。他们一起幸福地生活了一段时间,然后发生了变化,“B”类出现了,事实证明它与“A”类有很多共同之处,所以引入了一个基类。
A 类的测试已经涵盖了基类的公共行为。那么,问题是接下来会发生什么?
• B 类是否需要对通用(基类行为)进行测试?似乎该行为是 B 的一部分,因此应该对其进行测试,但是这些测试是否应该与 A 类的测试共享?对于基类?如果是这样,最好的分享方式是什么?
• 新的基类是否需要单元测试,或者基类可以通过其子类的测试进行测试吗?基类是否抽象有关系吗?
• 确保类 A 和 B 派生自基类并“信任”基类的单元测试以测试常见行为是否足够(因此不需要在子类中复制测试)? A & B 的测试只需要测试它们是新的/改变的行为吗?
• 我是否完全采用了错误的方法,每个真实课程大约有一个单元测试课程?
我在不同的时间采取了不同的观点,不同的方法会对重构代码的能力、编写测试所花费的时间等产生相当大的影响。人们发现哪些方法最有效?
【问题讨论】:
标签: unit-testing tdd