![软件单元测试](https://wfqqreader-1252317822.image.myqcloud.com/cover/132/47549132/b_47549132.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.1 桩对象和测试驱动函数
参考如下代码:
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_16_1.jpg?sign=1739209544-dsI2YMnWPmuVNJSDn4EXrfAHnoF0xlnW-0-f7e6a06cc14f9b308f00be90d04fc5ff)
其中,函数function_A()调用function_B(),function_B()又调用function_C()和function_D()。如果被测函数是function_B(),就需要模拟一个函数function_A()来调用function_B(),解决这个问题的方法通常是使用动态自动化单元测试框架。比如采用CUnit,代码如下:
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_17_1.jpg?sign=1739209544-7Qqqrol9Y0Vl13B7AHzdnlfemZCSGySv-0-5419d50bcee86d1d53e384415e8648de)
这个被测函数test_process_1()叫作测试驱动函数。又因为函数function_B()调用了function_C()和function_D(),所以要测试函数function_B(),就需要编写两个函数来模拟function_C()和function_D(),代码如下:
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_17_2.jpg?sign=1739209544-oQVVqAxZVW6w2JfNdWft7BMx0rw5t9ex-0-cf833608b5561313a70fda91a69475ab)
其中,这两个函数被称为桩对象(也被称为测试桩),它是测试替身的一种,用于替换真实协作者的对象,在第4.6节会详细介绍。