我们有一个由 2 年开发的项目,其架构设计不佳。现在一天根本没有任何单元测试。
当前版本的系统运行良好,但我们迫切需要重构核心模块。
预算也有限,所以我们不能雇佣足够数量的开发人员来编写单元测试。
是否有可能为单元测试自动生成代码,例如与数据交互,假设现在系统工作正常并且当前系统的输出可以转换为 XML-fixtures 以进行单元测试?
这种方法使我们能够快速开始重构现有代码并在某些核心功能因更改而损坏时立即收到反馈。
我们有一个由 2 年开发的项目,其架构设计不佳。现在一天根本没有任何单元测试。
当前版本的系统运行良好,但我们迫切需要重构核心模块。
预算也有限,所以我们不能雇佣足够数量的开发人员来编写单元测试。
是否有可能为单元测试自动生成代码,例如与数据交互,假设现在系统工作正常并且当前系统的输出可以转换为 XML-fixtures 以进行单元测试?
这种方法使我们能够快速开始重构现有代码并在某些核心功能因更改而损坏时立即收到反馈。
我会警惕任何声称能够自动确定任意应用程序的需求并将其编码为良好的单元测试的工具。
相反,我会花一点时间设置至少一些高级功能测试。例如,这些可能在代码中,使用完整堆栈加载一组预定义的输入并检查已知结果。或者使用 Selenium 或 FitNesse 等自动化工具甚至更高级别(取决于您正在构建的应用程序类型)。首先专注于测试系统中最重要的部分,因为时间总是有限的。
展望未来,我建议获取一份 Michael Feathers 的《有效地使用遗留代码》,它正好解决了您面临的问题:需要对大型、未经测试的代码库进行更新,同时确保您不会破坏现有的功能过程。