V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
DissDoge
V2EX  ›  程序员

如何写出有效的单元测试?

  •  
  •   DissDoge · 2023-12-07 17:08:48 +08:00 · 2770 次点击
    这是一个创建于 386 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.为什么需要单元测试?
    2.什么是有效的单元测试?
    3.如何写有效的单元测试?

    单元测试需要研发人员设计,但是很少有研发人员设计出合适并且符合测试需求的单元测试来,所以在测试人员的工作过程中,往往采用加大接口测试的广度与深度来让金字塔模型从三角形变为菱形。找不到一个形象的单元测试例子...希望社区大佬就此展开讨论,让小弟吸收下相关知识
    17 条回复    2023-12-08 08:27:22 +08:00
    litwater
        1
    litwater  
       2023-12-07 17:26:18 +08:00   ❤️ 1
    等 gpt 吧,人太不可靠了
    NoDataNoBB
        2
    NoDataNoBB  
       2023-12-07 17:50:11 +08:00
    如果你修改了代码,可以通过单元测试快速判断其它地方有没有受到影响
    zhazi
        3
    zhazi  
       2023-12-07 17:59:30 +08:00
    现在互联网公司的业务开发很简单,相关配套基础设施很完善,几乎不需要 unit test 来保证质量
    但是坚持写单元测试可以提高程序设计,更好的拆分任务,降低代码低耦合度。快速验证想法和 bug 。
    tool2d
        4
    tool2d  
       2023-12-07 18:04:02 +08:00
    你看 google 的 gtest ,基本上能保证每一个文件都有一个测试环境,覆盖率极高。

    不过我们现在网站开发偏多,API 之类还真不太好写测试。
    equationzhao
        5
    equationzhao  
       2023-12-07 18:05:52 +08:00   ❤️ 1
    我也想问, 最近实习看公司代码原来的很多测试都是直接启动一个服务发一个请求看返回值, 有些只是应付 ut coverage 要求的测试
    28Sv0ngQfIE7Yloe
        6
    28Sv0ngQfIE7Yloe  
       2023-12-07 18:16:40 +08:00
    不打桩的单测没意义
    aragakiyuii
        7
    aragakiyuii  
       2023-12-07 18:19:56 +08:00 via iPhone
    得先写出能写出单元测试的代码
    wule61
        8
    wule61  
       2023-12-07 18:25:39 +08:00 via Android
    写单元测试很枯燥,但确实有用
    maocat
        9
    maocat  
       2023-12-07 18:35:18 +08:00 via iPhone
    有用,写一点带一点
    Wh1t3zZ
        10
    Wh1t3zZ  
       2023-12-07 19:18:11 +08:00
    对于中大型项目,有单测后面改代码/重构的时候才敢改,没有单测让我来重构代码没底气啊
    PainAndLove
        11
    PainAndLove  
       2023-12-07 20:26:15 +08:00
    脱离覆盖率,只看单测没有意义
    noyidoit
        12
    noyidoit  
       2023-12-07 20:54:11 +08:00
    我也想知道,至今看过的单元测试都是 demo 级别,生产级别的只见过集成测试
    em70
        13
    em70  
       2023-12-07 20:56:16 +08:00
    你是没有 gpt 账号吗
    b1t
        14
    b1t  
       2023-12-07 22:20:34 +08:00
    我也反复查询过单元测试相关的信息,结果是选择早点下班
    anjingdexiaocai
        15
    anjingdexiaocai  
       2023-12-08 08:05:51 +08:00 via Android
    我觉得可以写单元测试的代码,之前是合格的…我之前好多代码压根写不了单元测试,所以写单元测试好像还可以反向倒逼你把代码设计得更好
    anjingdexiaocai
        16
    anjingdexiaocai  
       2023-12-08 08:06:38 +08:00 via Android
    @anjingdexiaocai 之前 --> 至少代码是合格的
    sampeng
        17
    sampeng  
       2023-12-08 08:27:22 +08:00 via iPhone   ❤️ 1
    停止用 postman 一类工具测 api ,停止自己用网页测试业务,停止先写 api 再写 model ,从下往上写。

    然后,你会发现你不写单测试工作质量及低。
    然后,你会发现你的单测肯定是 100%覆盖率。

    这是我最近的感悟,自测本来就要花时间的,看着很快很便捷,但在整个开发周期里面时间也是很可观的。还不如写单测。在单元开发周期里面总时间是不变的,带来的结果也是很可观的,不怕改代码。不怕改业务。设计有限,各种打桩和 mock 假数据。


    当然,完全不自测,指望测试团队兜底不在讨论范围内
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:01 · PVG 19:01 · LAX 03:01 · JFK 06:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.