【问题标题】:Developing JavaScript - When should I start making unit tests? [closed]开发 JavaScript - 我应该什么时候开始进行单元测试? [关闭]
【发布时间】:2012-06-15 14:24:28
【问题描述】:

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

话虽如此,我在最初的编码狂潮中有点过分热心。我有了一个想法,并付诸实施。因此,我的应用程序的结构过去和现在都不像我希望的那样 OO。这使我走上了多次大型重构的道路。我发现用弱类型语言进行重构让我特别容易出现错误重入。

我不得不返回并解决我重新引入的错误这一事实使我渴望进行单元测试。然而,相比之下,我如此多地改造我的代码库的基础这一事实仍然让我犹豫不决。我不想为我的项目创建单元测试,然后才决定需要更多的重组(这将使我的测试在“纠正错误”这一点上被弃用)。

这是一个常见的问题吗?我觉得在某个时间点,我的“基础”将足够稳定,可以为其编写测试……但这会使测试听起来不那么吸引人。

【问题讨论】:

标签: javascript unit-testing testing jasmine


【解决方案1】:

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

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

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

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

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

使用功能测试,您可以对应用程序的主要功能进行测试覆盖。您不会有像单元测试那样细粒度的测试,但是您可以更轻松地编写测试,并且最终不需要对它们进行太多修改。您可以为此使用 Selenium 之类的工具。

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

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多