Soft_Job 板


LINE

大家都选1吗?我觉得二比较好 Google的guideline是Prefer Realism Over Isolation 详见 https://abseil.io/resources/swe-book/html/ch13.html TotT有关fakes的讨论也提到 Fakes are useful for when you can't use the real implementation in a test https://testing.googleblog.com/2013/06/testing-on-toilet-fake-your-way-to.html 总之能用real implementation的时候就不要用fake ※ 引述《shane87123 (阳光大肥宅)》之铭言: : 先说我对 Unit test 的看法:测试单元(可能是 function)的逻辑是否正确 : 好,进入正题 : 小弟最近刚工作,稍微读了一下负责的 project 的程式码後, : 要开始开发 Unit test。 : 现况是,各个 file (.c) dependency 很重, : 常常会有一份 code 内其实呼叫了很多别份 code 的 function, : 举例来说 : A() { : B(); : C(); : if (check) : D(); : } : 族繁不及备载, : 而我目前设计有两个方向, : 1. : 将 B() C() D() 全部 fake ,单纯去测试 A() 的逻辑是否正确 : 这样做感觉上会比较单纯,一个 test case 只去 test A(), : 而且不需要去 include B() C() D() 的 header, : 这样一来 build 起来也比较容易,因为 include 那些 header 又会 dependency 到其他档 : 情况会非常复杂 : 缺点是 coverage 比较差,B() C() D()要额外去写 test case : 2. : 直接把他们 include 进来,build failed 就 include,直到 build 过为止 : 这样的好处是不用去实作 B() C() D() 的 fake, : 但就会让整个 unit test 的 dependency 很重 : 个人偏向1.,毕竟 unit test 就是去测试 function 的逻辑性, : 在其他 function 对测试 function 没有 side effect 的情况下(如不会改变某变数的值? : 将他们 fake 掉而只是单纯的去 test 该 function 而已 : 但我第一次接触,不太知道何时应该去 fake (或 mock) 一个 function QQ : 我只是有这两种想法,两个其实天差地远XDD : --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 75.172.24.41 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1667948850.A.92B.html
1F:推 bnd0327: 端看单元如何定义,如果有些类别或函式只是为了服务特定 11/09 08:49
2F:→ bnd0327: 类别或函式,那本质上相当於私有,就可以不用特地mock 11/09 08:50
3F:推 CRPKT: 它主要的考量是维护成本,fake 一样是需要维护的 11/09 09:42
4F:推 shibin: https://martinfowler.com/bliki/UnitTest.html 11/09 09:55
5F:→ shibin: 这篇也有相关讨论,供大家参考 11/09 09:55
6F:推 lovdkkkk: 有可能估狗的员工素质与程式品质搭上测试适合那句估狗的 11/09 10:10
7F:→ lovdkkkk: guideline, 其它公司未必适用 11/09 10:10
确实,其他公司大概没有Google的monorepo还有CI infra? ※ 编辑: Keyword (75.172.24.41 美国), 11/09/2022 11:10:30
8F:推 lovdkkkk: 如果 e2e 测出问题後能被快速定位就适合,而能快速定位 11/09 12:26
9F:→ lovdkkkk: 有很多可能,可能是工程师很会找问题,或错误讯息很清楚 11/09 12:27
10F:→ lovdkkkk: 或者有很完善的 log 追踪规划等等 11/09 12:28
11F:→ lovdkkkk: 亦即这个 guideline 有效 多半也是搭配其它多个面向的条 11/09 12:30
12F:→ lovdkkkk: 件或其它 guideline,整体凑齐之後有效 11/09 12:30
13F:推 neo5277: 如果都用介面方式用1,再用套件模拟这样就最单纯其他多的 11/09 13:40
14F:→ neo5277: 再做 11/09 13:40
15F:推 CaptainH: fake 太多跟本反应不出真实情况 11/09 18:40
16F:推 s06yji3: Unit test不需要考虑真实情况,而是该单元的实作有没有 11/09 19:24
17F:→ s06yji3: 问题。 11/09 19:24
18F:推 s0914714: 反应真实情况 那不就相同code跑ut结果可能不一样 11/09 23:49
19F:推 drajan: 用整合测试 integration test来测 11/10 06:57
20F:推 arhtur945: Unit test 配合後续的e2e 11/10 12:41







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP