[討論] Unit test 的撰寫請益
先說我對 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), 來自: 114.25.70.74 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1667904696.A.B26.html
推
11/08 18:53,
1年前
, 1F
11/08 18:53, 1F
→
11/08 19:12,
1年前
, 2F
11/08 19:12, 2F
→
11/08 19:12,
1年前
, 3F
11/08 19:12, 3F
→
11/08 19:12,
1年前
, 4F
11/08 19:12, 4F
我本來預期就是為個別檔案的個別function寫unit test,不過不確定這樣做是不是有符合u
nit test的特性
推
11/08 19:15,
1年前
, 5F
11/08 19:15, 5F
→
11/08 19:22,
1年前
, 6F
11/08 19:22, 6F
→
11/08 19:22,
1年前
, 7F
11/08 19:22, 7F
謝謝各位大大,那我可以放心去fake了
推
11/08 19:28,
1年前
, 8F
11/08 19:28, 8F
→
11/08 19:28,
1年前
, 9F
11/08 19:28, 9F
應是用google test,沒錯,他可以去呼叫fake function。這部分的實作應該沒什麼問題
推
11/08 20:14,
1年前
, 10F
11/08 20:14, 10F
※ 編輯: shane87123 (114.25.70.74 臺灣), 11/08/2022 20:15:55
→
11/08 21:14,
1年前
, 11F
11/08 21:14, 11F
→
11/08 21:24,
1年前
, 12F
11/08 21:24, 12F
推
11/08 22:41,
1年前
, 13F
11/08 22:41, 13F
→
11/08 22:42,
1年前
, 14F
11/08 22:42, 14F
→
11/08 22:42,
1年前
, 15F
11/08 22:42, 15F
推
11/08 23:01,
1年前
, 16F
11/08 23:01, 16F
推
11/08 23:51,
1年前
, 17F
11/08 23:51, 17F
推
11/08 23:57,
1年前
, 18F
11/08 23:57, 18F
推
11/09 00:00,
1年前
, 19F
11/09 00:00, 19F
→
11/09 00:00,
1年前
, 20F
11/09 00:00, 20F
推
11/09 00:17,
1年前
, 21F
11/09 00:17, 21F
→
11/09 00:17,
1年前
, 22F
11/09 00:17, 22F
→
11/09 01:07,
1年前
, 23F
11/09 01:07, 23F
→
11/09 01:08,
1年前
, 24F
11/09 01:08, 24F
推
11/09 02:21,
1年前
, 25F
11/09 02:21, 25F
→
11/09 02:21,
1年前
, 26F
11/09 02:21, 26F
→
11/09 07:22,
1年前
, 27F
11/09 07:22, 27F
→
11/09 08:53,
1年前
, 28F
11/09 08:53, 28F
推
11/09 12:10,
1年前
, 29F
11/09 12:10, 29F
→
11/09 12:12,
1年前
, 30F
11/09 12:12, 30F
推
11/09 15:23,
1年前
, 31F
11/09 15:23, 31F
推
11/09 18:28,
1年前
, 32F
11/09 18:28, 32F
→
11/09 18:28,
1年前
, 33F
11/09 18:28, 33F
→
11/09 18:28,
1年前
, 34F
11/09 18:28, 34F
→
11/09 18:28,
1年前
, 35F
11/09 18:28, 35F
推
11/09 22:33,
1年前
, 36F
11/09 22:33, 36F
→
11/10 01:36,
1年前
, 37F
11/10 01:36, 37F
→
11/10 01:38,
1年前
, 38F
11/10 01:38, 38F
推
11/10 12:51,
1年前
, 39F
11/10 12:51, 39F
→
11/10 12:51,
1年前
, 40F
11/10 12:51, 40F
→
11/10 12:52,
1年前
, 41F
11/10 12:52, 41F
討論串 (同標題文章)