开发 JavaScript - 我应该什么时候开始进行单元测试

Developing JavaScript - When should I start making unit tests?

本文关键字:单元测试 开始 什么时候 JavaScript 我应该 开发      更新时间:2023-09-26

我已经开始编写一个JavaScript应用程序作为个人项目。我希望在这个项目中学习和使用单元测试。我在编写单元测试方面没有太多经验,但我读到Jasmine将是一个很好的库来帮助我实现这一目标。

话虽如此,我在最初的编码狂欢中有点过分热心。我有一个想法,并带着它跑了。因此,我的应用程序结构过去和现在都不像我希望的那样 OO。这导致我走上了多重、大型重构的道路。我发现用弱类型语言进行重构会让我特别容易重新进入错误。

事实上,我

不得不回去解决我重新引入的错误,这让我渴望单元测试。然而,相比之下,我正在重新设计代码库的基础这一事实仍然让我犹豫不决。我不想为我的项目创建单元测试,然后决定需要更多的重组(这将弃用我的测试超过"纠正错误"的点)。

这是一个普遍关心的问题吗?我觉得总有一天,我的"基础"会足够稳定,可以为它编写测试......但这让测试听起来不那么吸引人。

我会考虑将您当前的代码库视为"实验性"或"原型" - 例如,您通常会丢弃的东西。

如果您计划重构代码库,最好在重构之前或为重构的代码引入单元测试。

为当前代码库编写测试的好处非常明显:您可以针对它们运行重构的代码库以验证功能。在重构时,您可能还需要稍微重组测试,但这很正常。

重写测试时不应该做的是删除它们。尝试使每个测试中的所有最终断言保持不变,同时替换测试的工作方式。这样,您应该能够更好地跟踪正在测试的内容,并且新功能仍然可以完成相同的工作。

当然,如果您以非面向对象的方式编写原始代码,则可能很难对其进行良好的测试。在这种情况下,我建议选择为原始代码编写更高级别的测试(功能测试),或者使用 TDD 类型方法编写重构代码。

使用功能测试,您可以获得应用程序主要功能的测试覆盖率。您不会像单元测试那样拥有细粒度测试,但您可以更轻松地编写测试,并且最终不需要对其进行太多修改。你可以使用像Selenium这样的工具。

使用 TDD 方法,您可能拥有最少的工作量。您将确保新编写的代码具有良好的测试覆盖率,但您必须手动验证代码的工作方式与旧代码相同。