Припустимо , у мене є клас менеджера , отриманий з базового класу Employee , і що службовець має метод getEmail () , яка успадковується диспетчера . Чи слід перевірити, що поведінка методу getEmail () менеджера насправді така сама, як у працівника?
На час написання цих тестів поведінка буде однаковою, але, звичайно, в якийсь момент в майбутньому хтось може перекрити цей метод, змінити його поведінку і, таким чином, порушити мою заяву. Однак, по суті, здається трохи дивним тест на відсутність коду, що перемішується.
(Зверніть увагу, що метод тестування Manager :: getEmail () не покращує охоплення коду (або взагалі будь-яких інших показників якості коду (?)), Поки Manager :: getEmail () не буде створено / перекрито.)
(Якщо відповідь - "Так", корисною буде деяка інформація про те, як керувати тестами, які поділяються між базовими та похідними класами.)
Еквівалентна постановка питання:
Якщо похідний клас успадковує метод від базового класу, як ви виражаєте (тестуєте), чи очікуєте ви, що спадковий метод:
- Поведіть точно так само, як це робить база зараз (якщо поведінка бази змінюється, поведінка похідного методу не має);
- Поведіть точно так само, як і базовий за весь час (якщо поведінка базового класу змінюється, змінюється і поведінка похідного класу); або
- Поведіть, проте це хоче (вам не байдуже поведінка цього методу, тому що ви його ніколи не називаєте).
Manager
класу,Employee
було першою великою помилкою.