先说我对 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