Ich habe lange Zeit Code im TDD-Stil entworfen und entwickelt. Was mich an TDD stört, ist das Schreiben von Tests für Code, der keine Geschäftslogik oder interessantes Verhalten enthält. Ich weiß, dass TDD mehr eine Designaktivität als ein Test ist, aber manchmal halte ich es für nutzlos, Tests in diesen Szenarien zu schreiben.
Zum Beispiel habe ich ein einfaches Szenario wie "Wenn der Benutzer auf die Schaltfläche" Überprüfen "klickt, sollte die Gültigkeit der Datei überprüft werden" . Für dieses Szenario schreibe ich normalerweise Tests für die Presenter / Controller-Klasse wie die folgende.
@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");
}
Wie Sie sehen, gibt es keine Entwurfsentscheidung oder interessanten Code zur Überprüfung des Verhaltens. Ich teste Werte aus der an MediaService übergebenen Ansicht. Normalerweise schreibe ich, aber ich mag solche Tests nicht. Was tun Sie in diesen Situationen? Schreibst du die ganze Zeit Tests?
UPDATE:
Ich habe den Testnamen und den Code nach Beschwerden geändert. Einige Benutzer sagten, dass Sie Tests für solche trivialen Fälle schreiben sollten, damit in Zukunft jemand interessantes Verhalten hinzufügen könnte. Aber was ist mit "Code für heute, Design für morgen". ? Wenn jemand, einschließlich ich, in Zukunft interessanteren Code hinzufügt, kann der Test dafür erstellt werden. Warum sollte ich es jetzt für die trivialen Fälle tun?