不,您不需要测试继承的方法。如果行为改变了,依赖这种方法的类及其测试用例将会中断Manager
。
考虑以下情形:电子邮件地址被汇编为Firstname.Lastname@example.com:
class Employee{
String firstname, lastname;
String getEmail() {
return firstname + "." + lastname + "@example.com";
}
}
您已经对此进行了单元测试,它对您的工作正常Employee
。您还创建了一个类Manager
:
class Manager extends Employee { /* nothing different in email generation */ }
现在,您有了一个ManagerSort
可根据经理的电子邮件地址对经理进行排序的类。您认为您的电子邮件生成与中的相同Employee
:
class ManagerSort {
void sortManagers(Manager[] managerArrayToBeSorted)
// sort based on email address omitted
}
}
您为您编写了一个测试ManagerSort
:
void testManagerSort() {
Manager[] managers = ... // build random manager list
ManagerSort.sortManagers(managers);
Manager[] expected = ... // expected result
assertEquals(expected, managers); // check the result
}
一切正常。现在有人来覆盖该getEmail()
方法:
class Manager extends Employee {
String getEmail(){
// managers should have their lastname and firstname order changed
return lastname + "." + firstname + "@example.com";
}
}
现在,会发生什么?testManagerSort()
由于的getEmail()
会Manager
被覆盖,您将失败。您将对此问题进行调查并找到原因。所有这些都无需为继承的方法编写单独的测试用例。
因此,您不需要测试继承的方法。
否则,如在Java中,你必须测试来自继承的方法Object
一样toString()
,equals()
等在每一个类。
Manager
从中得出一个类Employee
是第一个主要错误。