为了账号安全,请及时绑定邮箱和手机立即绑定

单元测试值得付出努力吗?

/ 猿问

单元测试值得付出努力吗?

牛魔王的故事 2019-11-06 12:05:45

单元测试值得付出努力吗?

我正在努力将单元测试集成到我所工作的团队的开发过程中,有些人对此持怀疑态度。有什么好方法可以让怀疑的开发人员相信单元测试的价值呢?在我的具体案例中,当我们添加功能或修复错误时,我们将添加单元测试。不幸的是,我们的代码库并不适合简单的测试。



查看完整描述

3 回答

?
RISEBY

我们办公室每天都有这样的交流:

“伙计,我只是喜欢单元测试,我只是对某些事情的工作方式做了一系列的改变,然后通过再次运行测试来确认我并没有破坏任何东西…。

细节每天都在变化,但情绪却没有变化。单元测试和测试驱动开发(TDD)有很多隐藏的和个人的好处,也有显而易见的好处,只有在他们自己做完之后,你才能真正向他们解释。

但是,忽略了这一点,这是我的尝试!

  1. 单元测试允许您快速对代码进行重大更改。您知道它现在起作用了,因为您已经运行了测试,当您进行所需的更改时,您需要让测试再次正常工作。这样可以节省时间。

  2. TDD帮助您了解何时停止编码。你的测试给了你信心,你已经做得够多了,可以停止调整,继续下一件事。

  3. 测试和代码一起工作,以实现更好的代码。你的代码可能是坏的/错误的。你的测试可能很糟糕。在TDD中,你指望的是双管齐下坏/低。通常,需要修正的是测试,但这仍然是一个很好的结果。

  4. TDD有助于便秘的编码。当你面对一件艰巨的工作时,写测试会让你快速前进。

  5. 单元测试帮助您真正理解您正在处理的代码的设计。不是编写代码来做某事,而是从概述代码所受的所有条件以及预期的输出开始。

  6. 单元测试给你即时的视觉反馈,我们都喜欢那些绿灯的感觉,当我们做了。非常令人满意。在中断后,你可以更容易地找到你停下来的地方,因为你可以看到你要去的地方-下一个红灯,需要修理。

  7. 与流行的信念相反,单元测试并不意味着编写两倍的代码,或者编写得更慢。一旦你掌握了它的诀窍,它比没有测试的编码更快、更健壮。测试代码本身通常比较琐碎,不会给您所做的工作增加很大的开销。只有当你这样做的时候,你才会相信:)

  8. 我认为是福勒说的:“不完美的测试,经常运行,比从来没有写过的完美测试要好得多。”我将此解释为允许我编写我认为最有用的测试,即使我的代码覆盖率的其余部分非常不完整。

  9. 好的单元测试可以帮助记录和定义应该做的事情。

  10. 单元测试有助于代码重用。迁移两种代码你对新项目的测试。调整代码,直到测试再次运行。

我参与的很多工作都没有很好地完成单元测试(web应用程序、用户交互等等),但即便如此,我们在这个商店里也都受到了测试的感染,而且当我们的测试被捆绑在一起时,我们也是最快乐的。我不能高度推荐这种方法。




查看完整回答
反对 回复 2019-11-07
?
忽然笑

单元测试就像去健身房一样。你知道这对你有好处,所有的争论都是有意义的,所以你开始锻炼。有一个最初的匆忙,这是很好的,但几天后,你开始怀疑这是否值得的麻烦。你每天要花一个小时换衣服,骑着仓鼠轮跑,你不确定除了腿和胳膊疼以外,你真的得到了什么。

然后,也许一两周后,就在疼痛消失的时候,一个大的最后期限即将到来。你需要把醒着的每一个小时都花在做“有用”的工作上,所以你把多余的东西都删掉了,比如去健身房。你摆脱了这个习惯,等到大期限结束的时候,你又回到了原点。如果你设法回到健身房,你会感到和你第一次去的时候一样的酸痛。

你做一些阅读,看看你是否做错了什么。开始时,你会对所有健康、快乐的人对运动的优点赞不绝口,感到有点不理智。你知道你们没有太多共同点。他们不需要开车15分钟就能去健身房,他们的楼里有一个。他们不需要和任何人争论锻炼的好处,这只是每个人都会做的,并且认为这是很重要的事情。当大截止日期临近时,他们并没有被告知锻炼是不必要的,就像你的老板要求你停止进食一样。

因此,要回答您的问题,单元测试通常是值得的,但所需的工作量对每个人来说都不一样。单元测试可能需要大量的努力,如果您正在处理公司的意大利面代码库其实价值代码质量(许多管理人员会对单元测试表示赞扬,但这并不意味着他们会在重要的时候坚持下去。)

如果你试图将单元测试引入到你的工作中,却没有看到你所期待的所有阳光和彩虹,不要责怪自己。您可能需要找到一份新的工作,以使单元测试真正为您工作。



查看完整回答
反对 回复 2019-11-07

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信