楼主:
Keyword (关键字)
2022-11-09 07:07:27大家都选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
:
作者:
bnd0327 (阿噗噗)
2022-11-09 08:49:00端看单元如何定义,如果有些类别或函式只是为了服务特定类别或函式,那本质上相当于私有,就可以不用特地mock
作者: CRPKT (crpkt) 2022-11-09 09:42:00
它主要的考量是维护成本,fake 一样是需要维护的
作者: shibin (喜饼) 2022-11-09 09:55:00
有可能估狗的员工素质与程式品质搭上测试适合那句估狗的guideline, 其它公司未必适用
作者:
neo5277 (I am an agent of chaos)
2022-11-09 13:40:00如果都用接口方式用1,再用套件模拟这样就最单纯其他多的再做
作者:
CaptainH (Cannon)
2022-11-09 18:40:00fake 太多跟本反应不出真实情况
作者: s06yji3 (阿南) 2022-11-09 19:24:00
Unit test不需要考虑真实情况,而是该单元的实作有没有问题。
反应真实情况 那不就相同code跑ut结果可能不一样
作者:
drajan (EasoN)
2022-11-10 06:57:00用整合测试 integration test来测
作者:
arhtur945 (AnthonyBennet)
2022-11-10 12:41:00Unit test 配合后续的e2e