Supongamos que tengo un Administrador de clase derivado de un Empleado de clase base , y ese Empleado tiene un método getEmail () que hereda el Administrador . ¿Debo probar que el comportamiento del método getEmail () de un gerente es, de hecho, el mismo que el de un empleado?
En el momento en que se escriban estas pruebas, el comportamiento será el mismo, pero, por supuesto, en algún momento en el futuro alguien podría anular este método, cambiar su comportamiento y, por lo tanto, interrumpir mi aplicación. Sin embargo, parece un poco extraño probar esencialmente la ausencia de código de intromisión.
(Tenga en cuenta que probar el método Manager :: getEmail () no mejora la cobertura del código (o incluso cualquier otra métrica de calidad del código (?)) Hasta que Manager :: getEmail () se cree / anule) .
(Si la respuesta es "Sí", sería útil cierta información sobre cómo administrar las pruebas que se comparten entre las clases base y derivada).
Una formulación equivalente de la pregunta:
Si una clase derivada hereda un método de una clase base, ¿cómo expresa (prueba) si espera que el método heredado:
- Comportarse exactamente de la misma manera que la base en este momento (si el comportamiento de la base cambia, el comportamiento del método derivado no lo hace);
- Comportarse exactamente de la misma manera que la base todo el tiempo (si el comportamiento de la clase base cambia, el comportamiento de la clase derivada también cambia); o
- Compórtate como quiera (no te importa el comportamiento de este método porque nunca lo llamas).
Manager
claseEmployee
fue el primer gran error.