Fools Don't Write Unit Tests

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

“我们没有时间编写单元测试”或“我们没有预算进行单元测试”是我经常听到的抱怨。有时听起来可能是这样说的,“我们不使用TDD,所以没有单元测试”,甚至是“对我们来说,TDD太昂贵了。”我确定你也听过这样的话,甚至自己也说过。我对此毫无头绪,不能理解这种逻辑。在我理解中,单元测试不是一个产品;它是一种工具。你使用测试来更快更好地开发产品。你怎么能说你没有时间使用能让你工作更快的工具呢?让我来向你展示如何使用。

无论是TDD还是其他方式,单元测试都是单元测试。你可以在主要代码之前或之后创建它。

单元测试是一种工具,它帮助你作为软件开发者“运行”你的代码并查看其工作情况。你还能用什么方式来检查它是否正常工作呢?当我听到“我没有时间进行单元测试”的时候,我下一个问题就是:“你是如何测试你的代码的呢?”

我真的无法理解如何可能编写代码而不进行测试。嗯,除非你是每月领薪水而且没人真正关心你的交付物。如果你在乎你所生产的软件,你会有兴趣看到它运行起来,对吗?

那么,你如何做到这一点呢?

如果是一个单页PHP网站,你可能可以在本地的Apache上运行它,在磁盘上进行修改,然后多次按下Cmd+R。这对于一个简单的代码片段和只有你自己的开发者来说是有效的。但是我听到这种“我没有时间”的论点来自于为企业系统工作的程序员。你们是如何测试你们的代码的呢?

我会将单元测试与面向对象编程(OOP)的类进行比较。你可以在一个类中设计整个应用程序,有数千个方法。这样你可以节省创建其他类的时间,结构化它们,思考它们之间的连接等。它将成为一个包含2万行代码的单一.java文件。你会说“你没有时间来创建类”,对吗?我们会如何评价这样的产品和作者呢?没错,我们会说他或她只是愚蠢。这与时间或预算无关。这样的程序员只是不知道如何使用面向对象编程工具,比如封装、继承、多态、接口、方法重载等。这与时间或预算无关;这与技能和纪律有关。

对于单元测试也是如此。如果你在没有单元测试的情况下创建代码,它可能能工作,就像那个有2万行代码的怪物类一样,但你的产品质量会非常低。这不是因为你没有时间编写单元测试,而是因为你不知道如何做。

所以每次我听到“我没有时间进行单元测试”,我就明白你只是不知道如何做,并试图用虚假的借口来掩盖这个事实。至少,这不是专业的行为。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 07:14

sixnines availability badge   GitHub stars