Supponiamo di avere un manager di classe derivato da un dipendente di classe base e che il dipendente abbia un metodo getEmail () ereditato da Manager . Devo verificare che il comportamento del metodo getEmail () di un manager è in realtà lo stesso di quello di un dipendente?
Al momento della stesura di questi test, il comportamento sarà lo stesso, ma ovviamente ad un certo punto in futuro qualcuno potrebbe ignorare questo metodo, modificarne il comportamento e quindi interrompere la mia applicazione. Tuttavia sembra un po 'strano testare essenzialmente l' assenza di codice ingerente.
(Si noti che il test del metodo Manager :: getEmail () non migliora la copertura del codice (o in effetti qualsiasi altra metrica della qualità del codice (?)) Fino a quando Manager :: getEmail () non viene creato / ignorato.)
(Se la risposta è "Sì", potrebbero essere utili alcune informazioni su come gestire i test condivisi tra le classi base e derivate.)
Una formulazione equivalente della domanda:
Se una classe derivata eredita un metodo da una classe base, come si esprime (si verifica) se si prevede che il metodo ereditato:
- Comportarsi esattamente allo stesso modo della base in questo momento (se il comportamento della base cambia, il comportamento del metodo derivato no);
- Si comportano esattamente allo stesso modo della base per tutti i tempi (se cambia il comportamento della classe base, cambia anche il comportamento della classe derivata); o
- Comportati come vuole (non ti interessa il comportamento di questo metodo perché non lo chiami mai).
Manager
classe èEmployee
stato il primo grande errore.