Gelegentlich stoße ich auf die Situation, dass zur Behebung eines Fehlers ein Codeabschnitt gelöscht werden muss. Der TDD-Purist würde (ich nehme an) befürworten, einen fehlerhaften Test zu schreiben, den Code zu löschen und dann den Testdurchlauf zu beobachten.
Nun, es scheint wirklich seltsam, einen Test zu haben, der behauptet, dass ein Teil des Codes entfernt wurde. Sicher, ich nehme an, es würde sicherstellen, dass sich niemand in die Quellcodeverwaltung eingegraben und den Code wieder eingefügt hat, aber ist es das wert? Wenn es sich lohnt, scheint es sicherlich weniger wert zu sein, als einen Test für den hinzugefügten Code zu schreiben , oder?
unit-testing
tdd
bug
jhewlett
quelle
quelle
Antworten:
Sie sehen es falsch. Der Test bestätigt nicht, dass der Code entfernt wurde. Der Test funktioniert assert eine bestimmte Funktionalität.
Dem Test ist es egal, wie viel Code zum Bestehen erforderlich ist, und er erkennt auch nicht, dass Sie Code entfernt haben. Der Wert eines solchen Tests ist derselbe wie bei jedem anderen Test, den Sie aufgrund eines Fehlers erstellen: Sie haben Vertrauen in das Fehlen des Fehlers, wenn der Test bestanden wird, und die Integration des Tests in den Erstellungsprozess stellt sicher, dass der Fehler behoben wird höchstwahrscheinlich nicht wieder eingeführt werden.
Eine weitere Möglichkeit, es aus TDD-Sicht zu betrachten, ist die folgende: Wenn Sie wissen, dass das Löschen des Codes den Fehler behebt und Sie sich dann fragen, ob Sie einen Test schreiben sollen, haben Sie TDD bereits falsch gemacht. Wenn Sie mit der Arbeit an dem Fehler beginnen, sollten Sie zuerst den Test schreiben, der sicherstellt, dass der Fehler vorhanden ist, indem er fehlschlägt. Erst danach beheben Sie den eigentlichen Fehler - der möglicherweise das Entfernen von Code erfordert oder nicht - und führen den Test durch. Die Frage, die Sie stellen, stellt sich nicht einmal auf diese Weise.
quelle