Unit testing 在测试驱动开发中重构时添加测试

Unit testing 在测试驱动开发中重构时添加测试,unit-testing,refactoring,tdd,Unit Testing,Refactoring,Tdd,假设我正在重构一些已经编写了单元测试的类。让我们假设测试覆盖率是合理的,因为它覆盖了大多数用例 在重构时,我更改了一些实现。移动一些变量,添加/删除一些变量,将内容抽象到一些函数中,等等。尽管如此,类的api及其函数仍然保持不变 重构这些类时是否应该添加测试?或者我应该为每一点重构添加一个新的测试?这是我在构建代码而不是重构时通常做的事情 PS:如果这真的很模糊,我道歉 通常,单元测试是工作/设计/用例规范,说明重构/(例如:类)应该如何真正工作。因此,通过说明这一点,我真的可以这样说: 根据您

假设我正在重构一些已经编写了单元测试的类。让我们假设测试覆盖率是合理的,因为它覆盖了大多数用例

在重构时,我更改了一些实现。移动一些变量,添加/删除一些变量,将内容抽象到一些函数中,等等。尽管如此,类的api及其函数仍然保持不变

重构这些类时是否应该添加测试?或者我应该为每一点重构添加一个新的测试?这是我在构建代码而不是重构时通常做的事情


PS:如果这真的很模糊,我道歉

通常,单元测试是工作/设计/用例规范,说明重构/(例如:类)应该如何真正工作。因此,通过说明这一点,我真的可以这样说:

  • 根据您的规范编写测试
  • 重构代码以遵守规范
  • 检查测试的评估结果

  • 在实践中,我得出的结论是,您不需要为了高百分比的代码覆盖率而测试代码的每一行,但要确保始终测试代码中行为或逻辑所在的部分。

    如果您的更改通过当前测试验证,则无需添加新的更改。检查代码覆盖率。如果新代码中存在漏洞,则意味着您进行了未经验证的功能更改


    如果将新提取的类移动到另一个项目,而您没有原始测试,那么新测试可能很有价值。

    有些主观。重构期间,现有测试会发生什么变化?它们是继续工作,还是因为与底层实现相关而中断?您希望从新测试中获得什么好处?你觉得新代码没有被充分覆盖吗?您是否引入了新的错误可能性/条件?你写什么类型的测试?你对嘲弄的态度是什么?重构有多大?它们都会影响开发人员可能采取的方法……大多数测试都会继续工作——几乎不需要更改。谢谢你指出我应该记住的事情。老实说,我正在寻找一种思考这些问题的方式。