테스트를 작성하고 테스트를 통과해야 할 시점에 도달하면 자체 기능으로 분리해야하는 추가 기능이 필요하다는 것을 알고 있습니까? 이 새로운 기능도 테스트해야하지만 TDD주기는 테스트 실패, 리팩토링을한다고 말합니다. 테스트를 통과하려고하는 단계에 있다면 구현에 필요한 새로운 기능을 테스트하기 위해 실패한 테스트를 시작하지 않아야합니다.
예를 들어, 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;
}
}
LineSegment.Intersects ( LineSegment ) 함수 가 필요하다는 것을 깨달았을 때 CollidesWithLine에 대한 테스트를 작성했습니다 . 그러나이 새로운 기능을 만들기 위해 테스트주기에서 수행중인 작업을 중단해야합니까? 그것은 "빨강, 녹색, 리 팩터"원칙을 어기는 것 같습니다.
lineSegments가 CollidesWithLine 함수 내부에서 교차한다는 것을 감지하고 작동 한 후 리팩터링 하는 코드를 작성해야합니까 ? LineSegment 에서 데이터에 액세스 할 수 있기 때문에이 경우에는 효과 가 있지만 그러한 종류의 데이터가 개인 정보 인 경우에는 어떻습니까?