Re: [討論] Unit test 的撰寫請益
大家都選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://www.ptt.cc/bbs/Soft_Job/M.1667948850.A.92B.html
推
11/09 08:49,
1年前
, 1F
11/09 08:49, 1F
→
11/09 08:50,
1年前
, 2F
11/09 08:50, 2F
推
11/09 09:42,
1年前
, 3F
11/09 09:42, 3F
推
11/09 09:55,
1年前
, 4F
11/09 09:55, 4F
→
11/09 09:55,
1年前
, 5F
11/09 09:55, 5F
推
11/09 10:10,
1年前
, 6F
11/09 10:10, 6F
→
11/09 10:10,
1年前
, 7F
11/09 10:10, 7F
確實,其他公司大概沒有Google的monorepo還有CI infra?
※ 編輯: Keyword (75.172.24.41 美國), 11/09/2022 11:10:30
推
11/09 12:26,
1年前
, 8F
11/09 12:26, 8F
→
11/09 12:27,
1年前
, 9F
11/09 12:27, 9F
→
11/09 12:28,
1年前
, 10F
11/09 12:28, 10F
→
11/09 12:30,
1年前
, 11F
11/09 12:30, 11F
→
11/09 12:30,
1年前
, 12F
11/09 12:30, 12F
推
11/09 13:40,
1年前
, 13F
11/09 13:40, 13F
→
11/09 13:40,
1年前
, 14F
11/09 13:40, 14F
推
11/09 18:40,
1年前
, 15F
11/09 18:40, 15F
推
11/09 19:24,
1年前
, 16F
11/09 19:24, 16F
→
11/09 19:24,
1年前
, 17F
11/09 19:24, 17F
推
11/09 23:49,
1年前
, 18F
11/09 23:49, 18F
推
11/10 06:57,
1年前
, 19F
11/10 06:57, 19F
推
11/10 12:41,
1年前
, 20F
11/10 12:41, 20F
討論串 (同標題文章)