Data una classe che implementa un'interfaccia, ma non ha bisogno di tutti i metodi implementati, qual è la best practice per il test di unità di questa classe rispetto alla copertura del codice? - o è considerato un segno per un odore di codice?
Per rendere il problema più concreto, considera una classe Java (la domanda non è limitata a Java) che implementa ComponentListener
ma deriva da qualche X
(in modo da escludere la scelta di utilizzare ComponentAdapter
) . La classe è tuttavia interessata solo al metodo componentResized()
e lascia gli altri corpi del metodo di callback vuoti.
Quando si controlla la copertura del codice, viene visualizzato un report che indica correttamente che i restanti metodi non sono stati testati. Per ovvi motivi, esito ad aggiungere un test che chiama semplicemente un metodo no-op per ragioni di copertura.
Anche se non sono obbligato a raggiungere una certa copertura, continuo a pensare che, di per sé, questo fenomeno possa indicare un odore di codice rispetto al principio della responsabilità unica. D'altra parte, non è inverosimile che una rappresentazione componente sia responsabile dell'aggiornamento del suo stato su un ridimensionamento.
Esiste una sorta di consenso o best practice su come gestire tali metodi, o la domanda è illegittima in quanto in esso è il risultato di un disegno apparentemente cattivo?