测试驱动设计 - 我哪里出错了?

WW.*_*WW. 9 language-agnostic tdd refactoring

我正在玩家里的玩具项目,以更好地了解测试驱动设计.起初似乎进展顺利,我遇到了失败的测试,代码,通过测试.

然后我来添加一个测试,并意识到我现在的结构会很困难,而且我应该分开一个有太多责任的特定课程.为下一次测试增加更多的责任显然是错误的.我决定抛开这个测试,并重构我所拥有的.这是事情开始出错的地方.

如果不立即进行大量测试就很难进行重构,然后唯一的选择就是做出许多改变,并希望我最终回到测试再次通过的地方.测试本身是有效的,我只需要在重构时打破几乎所有测试.在我回到所有测试通过之前,重构(我仍然不满意)花了我五六个小时.测试确实帮助了我.

感觉就像我离开了TDD赛道.你觉得我做错了什么?

由于这主要是一个学习练习,我正在考虑回滚所有的重构,并试图以更好的方式再次前进.

phi*_*ant 8

也许你在分课时走得太快了.Extract Class Refactoring的步骤如下:

  • 创建新类
  • 将该类的实例作为私有数据成员
  • 将字段逐个移动到新类
  • 编译并测试每个字段
  • 将方法移动到新类,逐个测试每个

这样你在重构你的类时就不会破坏大量的测试,你可以依靠测试来确保在整个类拆分中没有任何东西被打破.

此外,请确保您正在测试行为,而不是实施.