Ich baue eine neue Anwendung und versuche, die "Test-First" -Entwicklung so treu wie möglich zu halten. Ich befinde mich in Situationen, in denen ich eine Funktion implementieren/ändern muss, die eine Anzahl bestehender Komponententests ungültig macht. Wie soll ich damit umgehen? Wie ich es sehe, gibt es 3 Möglichkeiten:Was ist zu tun, wenn eine neue Funktion dazu führt, dass vorhandene Komponententests ungültig werden?
aktualisieren oder entfernen all bestehende Tests die neuen Voraussetzungen für die Funktion (Hinzufügen von mehr als nötig), dann implementieren die Funktion
Implementieren der gerecht zu werden Feature zuerst, Tests liefen Fehler zu sehen und zu aktualisieren oder bei einem nicht bestandenen Tests entfernen (hinzufügen von mehr als nötig)
hinzufügen neue Tests für die neue Funktion, die Funktion implementieren, führen Sie alle Tests die alten, um zu sehen es fehlschlagen, entfernen oder Update die alten Tests wie nötig
Die erste Option hält sich an TDD, kann aber quälend kontraproduktiv sein. Die zweite Option ist die einfachste, aber Sie würden nicht zuerst zuverlässig testen und möglicherweise nicht richtig "abgedeckt". Die dritte Option ist ein Kompromiss aus beidem und zu einem gewissen Grad attraktiv, aber Sie laufen Gefahr, einen Test neu zu schreiben, wenn Sie gerade einen alten aktualisiert haben könnten.
Ich habe nicht das Gefühl, dass ich hier eine klare Strategie habe. Was machst du in diesen Situationen?
Dies ist, was ich tue, wenn ich an all den Code denke, den ich getestet habe, der schließlich in den Mülleimer ging: http://www.youtube.com/watch?v=tgBI3-q5COM – Will
Es klingt seltsam, dass man eine Änderung (richtig) könnte mehrere Unit-Tests brechen. Ein oder zwei vielleicht, aber mehrere? Ist es möglich, dass sich Ihre Unit-Tests zu sehr überschneiden? – Beta
@Beta, Angenommen, Sie fügen eine Anforderung hinzu, dass die Implementierung jetzt eine zusätzliche abhängige Klasse erfordert. Jetzt bieten Ihre anderen Tests keine Scheinimplementierung des abhängigen Objekts. Wenn sie ausgeführt werden, erhalten Sie eine Reihe von Nullreferenzausnahmen. Sie müssten dann zurückgehen und Ihren Einrichtungscode korrigieren, so dass sie dann passieren würden. – tvanfosson