Unit testing 我应该为在TDD重构阶段创建的类编写新的单元测试吗?

Unit testing 我应该为在TDD重构阶段创建的类编写新的单元测试吗?,unit-testing,Unit Testing,我已经创建了我的单元测试和我的类,我尽可能快地完成了所有的工作,我有一个绿色的条和许多测试 现在,我想重构并使其良好。我想做的重构的一部分是创建一个SUT将依赖的新类,因为我意识到我在同一个类中有不同的抽象级别。现在,现有的测试将完全覆盖新类,但我不确定是否要将测试移动到一个测试新类的新TestClass,在两者中复制它们(尽管它们略有不同),或者不要麻烦,因为原始类是外部API,而新类是私有成员变量 不测试私有方法是公认的(但有点争议)最佳实践 您希望您的测试套件能够确保您的公共API的功能正

我已经创建了我的单元测试和我的类,我尽可能快地完成了所有的工作,我有一个绿色的条和许多测试


现在,我想重构并使其良好。我想做的重构的一部分是创建一个SUT将依赖的新类,因为我意识到我在同一个类中有不同的抽象级别。现在,现有的测试将完全覆盖新类,但我不确定是否要将测试移动到一个测试新类的新TestClass,在两者中复制它们(尽管它们略有不同),或者不要麻烦,因为原始类是外部API,而新类是私有成员变量

不测试私有方法是公认的(但有点争议)最佳实践

您希望您的测试套件能够确保您的公共API的功能正确且符合文档要求,而不是实际的实现


因此,只要您的重构不添加任何附加功能、更改公共方法中的参数等,那么您就不需要在重构阶段添加新的测试。

您只需要遇到单元测试的一个巨大优势:
重构保护
,这意味着,如果您有一套很好的单元测试,涵盖了类方法的
所有功能和角落案例
,那么只要不修改该类的
公共接口
,您就可以以任何方式安全地重构该类


您计划添加的新
helper
类本身不需要测试,因为它将通过原始类进行间接测试。但是,如果您打算将<代码>帮助器< /代码>类导出到其他类,那么您可以考虑为帮助器< />代码添加测试,以减少调试其他类上的失败测试的开销(如您知道的<代码>帮助器< /代码> OK)。< /P>我不是在讨论创建私有方法。我知道不要测试私有方法。我说的是创建一个第一个依赖的全新类。我明白了,但是如果新类没有任何公共方法,那么就没有。如果它确实有不属于API的公共方法,那么这取决于开发人员。有时测试A类的方法就足以覆盖B类。