1

我正在练习 TDD,并且我已经完成了满足我的测试的最简单的实现。现在在第二次和第三次测试之后,我发现我可以将我的逻辑部分提取到依赖关系中。我应该如何处理现有的测试?我应该让它们保持原样并间接测试这种依赖关系吗?或者我应该“重写”我的测试并在原始案例中使用存根/模拟将它们分成几部分?

4

4 回答 4

3

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

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

于 2012-08-10T10:46:05.340 回答
1

我认为那里没有灵丹妙药的答案。仅根据您的描述,我倾向于:

  1. 保持现有测试不变
  2. 专门为提取的依赖项添加新测试

如果您最终完全复制了测试代码,您可能想要减轻,但重要的是继续测试“完全集成的功能”是否按预期工作。

于 2012-08-10T10:51:02.280 回答
0

refactor阶段Test Driven Development,它可能是业务代码或相应测试的重构。因此,在重构代码时,您也应该采取措施重构测试用例以使它们通过。

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

于 2012-08-10T10:46:09.113 回答
0

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

  • 从所有测试都是绿色的状态开始。
  • 将行为 B 从 Class1 提取到 Class2。
  • 检查损坏的测试。如果没有,那么要么你忘了测试 B,要么你的重构工具有超能力。
  • 更正测试行为 B 的单元测试,使其在 Class2 而不是 Class1 上运行。
  • (可选)创建协作测试,验证 Class1 与 Class2 正确对话,反之亦然。您可能需要为此使用模拟和/或存根。
于 2012-08-10T20:24:46.137 回答