Bir test yazdığınızda ve test geçişini yapmanız gereken noktaya geldiğinizde ne yaparsınız ve kendi işlevine ayrılması gereken ek bir işlevsellik parçasına ihtiyacınız olduğunu fark edersiniz? Bu yeni işlevin de test edilmesi gerekiyor, ancak TDD döngüsü Bir testi başarısız yap, onu geç ve sonra yeniden düzenleme yap diyor. Test geçişimi yapmaya çalıştığım adımdaysam, gitmem ve uygulamam gereken yeni işlevselliği test etmek için başka bir başarısız test başlatmamam gerekiyor.
Örneğin, WillCollideWith ( LineSegment ) işlevi olan bir nokta sınıfı yazıyorum :
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;
}
}
LineSegment.Intersects ( LineSegment ) işlevine ihtiyacım olacağını fark ettiğimde CollidesWithLine için bir test yazıyordum . Ancak, bu yeni işlevselliği oluşturmak için test döngümde ne yaptığımı durdurmalı mıyım? Bu "Kırmızı, Yeşil, Refaktör" ilkesini çiğniyor gibi görünüyor.
Sadece lineSegments Çarpışmaları CollidesWithLine işlevinin içinde kesiştiğini ve kodu çalıştıktan sonra yeniden düzenlediğini algılayan bir kod yazmalı mıyım ? LineSegment'ten verilere erişebildiğim için bu durumda işe yarar , ama bu tür verilerin özel olduğu durumlarda ne olur?