[編輯]:Click here在適當的網站的問題。當TDD測試揭示需要測試的新功能時該怎麼辦?
當你正在編寫一個測試時,你會做什麼,你到了需要讓測試通過的地步,並且你意識到你需要一個額外的功能應該被分離到它自己的功能?該新功能也需要進行測試,但TDD週期表示要使測試失敗,並使其通過重構。如果我正在嘗試使我的測試通過,那麼我不應該開始另一個失敗的測試來測試我需要實現的新功能。
例如,我寫了一個函數WillCollideWith(線段)點類:
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;
}
}
我在寫一個測試CollidesWithLine當我意識到我需要一個LineSegment.Intersects(LineSegment)函數。但是,我應該停止在測試循環中執行的操作來創建這個新功能嗎?這似乎打破了「紅色,綠色,重構」的原則。
我是否應該只是編寫檢測lineSegments交點內部的CollidesWithLine函數的代碼,並在其工作後對其進行重構?在這種情況下,這可以起作用,因爲我可以訪問LineSegment中的數據,但是如果這種數據是私密的,那麼情況如何呢?
OT here;嘗試程序員。 – 2012-11-09 17:11:41