单元测试子类的最佳方法是什么?让我们假设有一个我已经编写过测试的基类,并且有一些子类会覆盖父公共和/或受保护方法中的一些父行为。
我的子类的测试类是否应该扩展(并覆盖适当的测试方法)我的基类的测试类,以便应用所有基类测试?否则,我希望重复测试代码。
答案 0 :(得分:10)
根据Liskov substitution principle,子类的实例应该具有与基类相同的属性,因此传递(所有?)相同的单元测试。
我会运行[也许不是全部,所有相关的]每个子类的基类测试。这可以通过test helper实现。
是的,对测试类进行子类化可能是避免单元测试中重复的好方法。看看Testcase superclass模式。
答案 1 :(得分:6)
没有示例很难看到,但我会在一组测试中测试基类,然后为子类创建新的测试,并测试不同的行为。