如何对子类进行单元测试

DRo*_*ock 15 tdd phpunit unit-testing

单元测试子类的最佳方法是什么?让我们假设有一个我已经编写过测试的基类,并且有一些子类会覆盖父公共和/或受保护方法中的一些父行为.

我的子类的测试类是否应该扩展(并在适当的情况下覆盖测试方法)我的基类的测试类,以便应用所有基类测试?否则,我希望有重复的测试代码.

phi*_*ant 10

根据Liskov替换原则,子类的实例应该具有与基类相同的属性,因此,传递(所有?)相同的单元测试.

我会运行[也许不是全部,所有相关的]每个子类的基类测试.这可以通过测试助手来实现.

是的,对测试类进行子类化可能是避免单元测试中重复的好方法.看看Testcase超类模式.

  • 最初的帖子是Liskov原则是正确的.子类应该传递超类的所有单元测试,*和更多*.附加测试反映了子类的附加功能.当然,您可以以违反Liskov的方式覆盖方法,在这种情况下,相关的单元测试将失败. (7认同)

小智 6

没有示例很难看到,但我会在一组测试中测试基类,然后为子类创建新的测试,并测试不同的行为.