如何处理TDD的重构阶段

| 在TDD会话过程中,假设我编写了一个失败的测试,然后使其通过。我通过使用诸如提取类和移动方法之类的重构从原始单元中提取代码来进行重构。现在进一步假设我的原始测试不再涵盖提取的代码,因为原始代码现在模拟了其依赖关系,这对于单元测试是正确的。 返回并将测试改型到提取的代码是否合适?还是我在重构期间最终得到未经测试的代码时犯了一个错误?感觉就像我的代码库正在扩展一样,我必须进行重构,我正在对重构的代码进行大量测试。感觉真尴尬。我重构错了吗?     
已邀请:
  现在进一步假设我的原始测试不再涵盖提取的代码,因为原始代码现在模拟了其依赖关系,这对于单元测试是正确的。 模拟依赖关系通常是一件好事,但并非总是如此,我不会说模拟所有依赖关系“对于单元测试是正确的”。 在TDD的重构步骤中,您应该更改生产代码中不影响测试通过的内容。而且,您不应该同时更改测试。 您可能以后需要修改测试,以便提取的代码独立于原始代码进行测试,并在原始测试中进行模拟。     
这可能表明您的单元测试不够精细。就像,您已经编写了集成测试,并使其通过,现在您正在进行单元测试。 或者,也许在重构之后,您尝试对不应该使用的方法(例如私有方法)进行测试。无论如何,重构都不应该改变代码的覆盖范围。     

要回复问题请先登录注册