当我将代码提取为依赖时,我应该重新组织我的测试吗?

时间:2012-08-10 10:38:35

标签: java unit-testing testing tdd

我正在练习TDD,我已经完成了最简单的实现,满足了我的测试。现在经过第二次和第三次测试后,我发现我可以将我的逻辑片段提取为依赖。我应该怎么做现有的测试?我应该保留它们并间接测试这种依赖性吗?或者我应该“重写”我的测试并在原始情况下使用存根/模拟将它们分成几部分?

4 个答案:

答案 0 :(得分:3)

如果可以,我会保留原始测试,因为它们是作为回归测试运行的。即,现在你已经重新编写了原始代码,测试仍然有效。

然后,您可以围绕提取的功能编写其他测试。此时编写更复杂的测试以直接测试提取的功能而不是通过已识别/重构的集成层可能是有意义的。

答案 1 :(得分:1)

我认为那里没有银弹答案。仅仅基于你描述的内容,我倾向于:

  1. 保留现有的测试
  2. 专门为提取的依赖项添加新测试
  3. 如果你最终完全复制测试代码,你可能想要减轻,但重要的是要继续测试“完全集成的功能”是否按预期工作。

答案 2 :(得分:0)

refactor的{​​{1}}阶段,可能是重构业务代码或相应的测试。因此,当您重构代码时,您应该采取措施重构测试用例以使它们通过。

http://en.wikipedia.org/wiki/Test-driven_development

答案 3 :(得分:0)

提取到依赖项可能是重构,因为整体行为保持不变,您只将其分布在更多类上。重构是TDD周期中的第三步也是最后一步,在测试为绿色之后发生,而不添加新测试。所以这就是我要做的事情:

  • 从一个所有测试都是绿色的状态开始。
  • 将行为B从Class1提取到Class2。
  • 检查是否有破损的测试。如果没有,那么要么你忘了测试B,要么你的重构工具都有超级大国。
  • 更正测试行为B的单元测试,使其在Class2而不是Class1上运行。
  • (可选)创建协作测试,验证Class1是否正确与Class2对话,反之亦然。您可能希望使用模拟和/或存根。