Supponiamo che io abbia una classe Manager derivata da una classe base Dipendente e che Employee abbia un metodo getEmail () ereditato da Gestione . Devo verificare che il comportamento del metodo getEmail () di un gestore sia in realtà lo stesso di quello di un dipendente?
Nel momento in cui questi test sono scritti, il comportamento sarà lo stesso, ma di Certo, a un certo punto in futuro qualcuno potrebbe scavalcare questo metodo, cambiare il suo comportamento e quindi rompere la mia domanda. Tuttavia sembra un po 'strano testare essenzialmente l' assenza del codice di intromissione.
(Tieni presente che testare il metodo Manager :: getEmail () non migliora la copertura del codice (o qualsiasi altra metrica di qualità del codice (?)) fino a Manager :: getEmail () viene creato / sostituito.)
(Se la risposta è "Sì", potrebbero essere utili alcune informazioni su come gestire i test condivisi tra classi di base e derivate.)
Una formulazione equivalente della domanda:
Se una classe derivata eredita un metodo da una classe base, come esprimi (test) se stai aspettando che il metodo ereditato sia:
- Comportarsi esattamente nello stesso modo che fa la base adesso (se il comportamento della base cambia, il comportamento del metodo derivato no);
- Comportarsi esattamente allo stesso modo della base per sempre (se il comportamento della classe base cambia, cambia anche il comportamento della classe derivata); o
- Comportati comunque (non ti interessa il comportamento di questo metodo perché non lo chiami mai).