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

AI 编程中的单元测试

  •  
  •   mooncakeSec 4 天前 1465 次点击

    我最近用 AI 完整实现了一个项目,效率很高,但也遇到了新的问题:因为绝大部分代码不是我亲手写的,所以在 Review 时既花时间,又缺乏“掌控感”,心里并不踏实。为了解决这个问题,我想到用单元测试来建立信任。但新问题又出现了:

    单测如果也是 AI 写的,那在某些情况下会不会变成“AI 自己给自己打分”?如果 AI 改动了代码逻辑,自动生成的单测很可能也会同步出错或不够可靠。

    在 AI 参与较多的开发流程里,单元测试到底应该怎么安排?大家通常是如何处理 AI 写代码 + 测试的质量保证问题的?

    9 条回复    2025-11-18 15:58:32 +08:00
    azure233
        1
    azure233  
       4 天前
    TDD 也许可以? 把需求告诉 ai ,让 ai 先写出对应的测试。保证自己能够一步步看到和理解测试的生成过程。
    zmcity
        2
    zmcity  
       4 天前
    分两个 task 写,一个专门写测试,另一个专门用于通过测试
    rb6221
        3
    rb6221  
       4 天前   1
    开两个会话
    如果是你说的自己给自己打分,首先他要知道你的业务代码是什么样的,才可能根据你的业务代码创建相应的测试代码来打分
    但是两个会话,写单元测试的会话是不知道你的业务代码长什么样的,他也就不存在作弊
    jiansihun
        4
    jiansihun  
       4 天前
    你写完之后,让它写单元测试验证呀
    geminikingfall
        5
    geminikingfall  
       4 天前
    TDD 可以,先写测试。
    jqknono
        6
    jqknono  
       4 天前
    别让 claudesonnet 写测试, 否则它总是"让我用更简化的测试来验证", 一看和业务代码风马牛不相及.
    crackidz
        7
    crackidz  
       4 天前
    你可以说 AI 喷射太快你来不及看具体的业务代码,但是你总不能测试的场景也不看吧...
    visper
        8
    visper  
       3 天前
    AI 把测试改了适应 bug.
    mooncakeSec
        9
    mooncakeSec  
    OP
       3 天前
    @crackidz 一针见血,所以大佬的最佳实践是专注测试 case 吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1205 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 17:22 PVG 01:22 LAX 09:22 JFK 12:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86