Was tun Sie, wenn Sie einen Test schreiben und an den Punkt gelangen, an dem Sie den Test bestehen müssen, und wenn Sie feststellen, dass Sie eine zusätzliche Funktionalität benötigen, die in ihre eigene Funktion unterteilt werden sollte? Diese neue Funktion muss ebenfalls getestet werden, aber der TDD-Zyklus sagt, dass ein Test fehlschlagen soll. Lassen Sie ihn bestehen und überarbeiten Sie ihn. Wenn ich mich in der Phase befinde, in der ich versuche, meinen Test zu bestehen, darf ich keinen weiteren fehlgeschlagenen Test starten, um die neuen Funktionen zu testen, die ich implementieren muss.
Zum Beispiel schreibe ich eine Punktklasse , die eine Funktion WillCollideWith ( LineSegment ) hat :
public class Point {
// Point data and constructor ...
public bool CollidesWithLine(LineSegment lineSegment) {
Vector PointEndOfMovement = new Vector(Position.X + Velocity.X,
Position.Y + Velocity.Y);
LineSegment pointPath = new LineSegment(Position, PointEndOfMovement);
if (lineSegment.Intersects(pointPath)) return true;
return false;
}
}
Ich habe gerade einen Test für CollidesWithLine geschrieben, als mir klar wurde, dass ich eine LineSegment.Intersects ( LineSegment ) -Funktion benötigen würde . Aber sollte ich einfach aufhören, was ich in meinem Testzyklus mache, um diese neue Funktionalität zu erstellen? Das scheint das "Rot, Grün, Refaktor" -Prinzip zu brechen.
Sollte ich nur den Code schreiben, der diese lineSegments-Überschneidung in der CollidesWithLine- Funktion erkennt, und ihn nach der Ausführung umgestalten? Das würde in diesem Fall funktionieren , da ich über LineSegment auf die Daten zugreifen kann. Was ist jedoch mit den Fällen, in denen diese Art von Daten privat ist?