当基类被驱逐出来时,单元测试如何改变?

for*_*rir 8 tdd unit-testing

这部分是这个问题的后续行动.

我不确定最好的方式来问这个,所以我会尝试一个简短的故事来设置场景:

曾几何时,有一个类'A',它有一个单元测试类'ATests'负责通过公共接口测试它的行为.他们幸福地在一起生活了一段时间然后发生了变化,并且"B"级出现了,因为它与"A"级有很多共同之处,因此引入了一个基类.

A类的测试已经涵盖了基类的公共行为.那么问题是接下来会发生什么?

•B类是否需要对公共(基类行为)进行测试?看起来行为是B的一部分,所以应该进行测试,但这些测试是否应该与A类共享?对于基类?如果是这样,分享的最佳方式是什么?

•新基类是否需要单元测试,或者基类是否可以通过子项测试进行测试?基类是抽象的是否重要?

•是否足以确保类A和B派生自基类并"信任"基类的单元测试以测试常见行为(因此测试不需要在子类中复制)?A&B的测试只需要测试它们是新的/改变的行为吗?

•我是否遵循完全错误的方法,每个真实班级大约有一个单元测试课程?

我在不同的时间采取了不同的观点,不同的方法会对重构代码的能力,编写测试的时间等产生相当大的影响.人们发现哪些方法效果最好?

Tru*_*ill 3

您可以查看代码覆盖率工具;他们可以向您展示您是否真正测试了所有代码。就我个人而言,如果我有一个涵盖基类行为的测试并且我不会覆盖它,我不会再次测试它。目标是让代码更改(可能)仅破坏一个测试。

不需要为每个真实课程坚持一个单元测试课程。每个独特的设置装置一个单元测试类是一种方法,然后就是整个BDD学校......

  • 我从未真正发现代码覆盖工具特别有用,除非在它们上花费大量精力。知道测试运行某些代码与知道代码已经过测试并不相同。 (2认同)