Apa yang Anda lakukan saat menulis tes dan sampai pada titik di mana Anda perlu lulus ujian dan menyadari bahwa Anda memerlukan fungsionalitas tambahan yang harus dipisahkan ke dalam fungsinya sendiri? Fungsi baru itu perlu diuji juga, tetapi siklus TDD mengatakan untuk membuat tes gagal, membuatnya lulus kemudian refactor. Jika saya berada di langkah di mana saya mencoba untuk membuat tes lulus saya tidak seharusnya pergi dan memulai tes gagal lagi untuk menguji fungsionalitas baru yang perlu saya terapkan.
Sebagai contoh, saya menulis kelas titik yang memiliki fungsi WillCollideWith ( LineSegment ) :
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;
}
}
Saya sedang menulis tes untuk CollidesWithLine ketika saya menyadari bahwa saya akan membutuhkan fungsi LineSegment.Intersects ( LineSegment ) . Tetapi, haruskah saya menghentikan apa yang saya lakukan pada siklus pengujian untuk membuat fungsi baru ini? Itu tampaknya melanggar prinsip "Merah, Hijau, Refactor".
Haruskah saya hanya menulis kode yang mendeteksi bahwa lineSegments Intersect di dalam fungsi CollidesWithLine dan refactor setelah berfungsi? Itu akan bekerja dalam kasus ini karena saya dapat mengakses data dari LineSegment , tetapi bagaimana jika dalam kasus-kasus di mana data semacam itu bersifat pribadi?