首页 > 解决方案 > TDD:在新类中重构

问题描述

经过多次红绿循环后,我有一堂课要进行测试。我看到这个班级很大并且做不同的任务。

现在我想重构它……重构后我有 3 个类,覆盖率仍然是 100%,所有测试仍然是绿色的。

但问题是,我测试新的两个类而不是“旧大类”的测试,我现在应该拆分测试吗?或者我应该在重构类中的代码之前为每个类编写额外的测试吗?

标签: tdd

解决方案


我现在应该拆分测试吗?

“重构”的快速含义——你的测试不需要改变。公共 API 和您的实现的可观察行为没有改变。您刚刚在实现中创建了一些新的模块边界。

(如果您所做的更改迫使您修改现有测试,那么您所做的活动不是“重构”)。

由于公共 API 没有改变,现有的测试仍然有价值——它们描述了原始 API 所需的行为。所以你不应该“拆分”这些测试。

如果您在重构期间创建的新类将被提升到公共 API 中,那么您应该为新的公共 API 引入新的测试。

在您宣布 API 的生命周期结束、弃用它并达到生命周期结束期限之前,您对原始 API 的现有测试保持不变。此时,您可以删除旧 API 的测试。


推荐阅读