bug太多,怎么办?考虑过编写单元测试吗?

149 阅读3分钟

写单元测试的好处

  1. 减少最终项目bug数量
  2. 对于已测试通过的逻辑点,你能很肯定的说,这没有bug
  3. 避免修改某个功能点,而影响到了其他功能点而不自知
  4. 编写单元测试的过程,可能会让你发现遗漏的逻辑点,完善这些逻辑点,能让你的代码更健壮
  5. 生成测试覆盖率报告,当有足够的测试覆盖率,你自己放心,别人用着也安心

写单元测试的坏处

看了前面写的好处,你是否认为,写,以后我所有代码都写单元测试? 如果,有产生过这种想法,那么我再说说写单元测试的坏处:耗时,非常耗时。可能你写一个功能花了 1小时,但你再写个单元测试可能需要额外再花3小时

为什么这么耗时?

  • 大部分前端应该都没有过多关注过,前端的单元测试框架,所以不熟,非常的不熟练
  • 前端编写单元测试,可能还需要在已完成的代码中,再补充一些东西,用来在单元测试代码中,获取到界面元素,从而进行断言
  • 编写单元测试,还需要知道如何mock数据。你没看错,单元测试也需要mock数据,你能想象当前调用一个列表接口查询的时候,同样的条件,每次都是不同的结果吗?所以,mock数据,在单元测试中很重要。要mock出各种情况的数据,当然也要花实现。

单元测试能减少bug吗?

单元测试,不能减少开发中的bug。

  • 开发中的bug数量,并不由是否有单元测试决定,而是看逻辑是否严谨,写代码时是否足够细心

当然,如果你采用的是TDD开发模式,那能最大限度的避免,开发中逻辑不严谨问题

单元测试,能减少最终产物的bug。

至于为什么说,能减少最终产物的bug,是因为你有单元测试,那么,你考虑到了的逻辑点,基本都会被单元测试覆盖了,而只要单元测试能通过,那至少表明,你考虑到的逻辑点是无问题的。最终产物的bug自然就会减少。

那么到底是否应该写单元测试呢?

  • 时间不足的时候,不写
  • 时间充足,尽量写

个人了解过的,vue开发有哪些单元测试框架?

  • vitest
  • Playwright

应该选择哪种测试框架?

  • vitest: 适用于组件测试,与代码逻辑覆盖测试
  • Playwright:适用于界面测试

应该避免的误区

应该避免用单元测试来测试交互效果和响应式,个人认为单元测试只适合测试业务逻辑

参考资料

Mocking File Upload in Vue with Jest | Zaengle Corp

【译】诉诸 Vitest、Storybook 和 Playwright 进行现代化前端测试 - 掘金 (juejin.cn)