Ho progettato e sviluppato codice con stile TDD per molto tempo. Ciò che mi disturba è che TDD sta scrivendo test per codice che non contiene alcuna logica di business o comportamento interessante. So che il TDD è un'attività di progettazione più che di testing, ma a volte ritengo sia inutile scrivere test in questi scenari.
Ad esempio, ho uno scenario semplice come "Quando l'utente fa clic sul pulsante di controllo, dovrebbe verificare la validità del file" . Per questo scenario, di solito inizio a scrivere test per la classe relatore / controllore come quella qui sotto.
@Test
public void when_user_clicks_check_it_should_check_selected_file_validity(){
MediaService service =mock(MediaService);
View view =mock(View);
when(view.getSelectedFile).thenReturns("c:\Dir\file.avi");
MediaController controller =new MediaController(service,view);
controller.check();
verify(service).check("c:\Dir\file.avi");
}
Come puoi vedere, non esiste alcuna decisione di progettazione o codice interessante per verificare il comportamento. Sto testando i valori da vista passati a MediaService. Di solito scrivo ma non mi piace questo tipo di test. Che cosa fai riguardo a queste situazioni? Scrivi test per tutto il tempo?
UPDATE:
Ho cambiato il nome del test e il codice dopo i reclami. Alcuni utenti hanno detto che dovresti scrivere test per casi banali come questo, quindi in futuro qualcuno potrebbe aggiungere un comportamento interessante. Ma che dire di "Codice per oggi, design per domani."? Se qualcuno, incluso me stesso, aggiunge codice più interessante in futuro, il test può essere creato per quel momento. Perché dovrei farlo ora per i casi banali?