我正在练习 TDD,并且我已经完成了满足我的测试的最简单的实现。现在在第二次和第三次测试之后,我发现我可以将我的逻辑部分提取到依赖关系中。我应该如何处理现有的测试?我应该让它们保持原样并间接测试这种依赖关系吗?或者我应该“重写”我的测试并在原始案例中使用存根/模拟将它们分成几部分?
问问题
67 次
4 回答
3
如果可以,我会保留您的原始测试,因为它们是作为回归测试运行的。即,现在您已经重新编写了原始代码,测试是否仍然有效。
然后,您可以围绕提取的功能编写其他测试。此时编写更复杂的测试以直接测试提取的功能而不是通过您已识别/重构的集成层可能是有意义的。
于 2012-08-10T10:46:05.340 回答
1
我认为那里没有灵丹妙药的答案。仅根据您的描述,我倾向于:
- 保持现有测试不变
- 专门为提取的依赖项添加新测试
如果您最终完全复制了测试代码,您可能想要减轻,但重要的是继续测试“完全集成的功能”是否按预期工作。
于 2012-08-10T10:51:02.280 回答
0
在refactor
阶段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 回答