[编辑]: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