先說我對 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