假设我们要测试的目标文件为source.c,其中有以下几个函数
void A()
{
B();
return;
}
void B()
{
C();
return;
}
void C()
{
return;
}
按照所有调用函数全部打桩的方法测试的时候会遇到一个问题,测试A()时把B()打桩,需要把B()注释掉,
否则就没有办法进行控制,测B()的时候需要把B()的桩函数注释掉,这样就会造成在一个测试工程里面无
法同时运行A()和B()的测试例,测试无法回归。
我们想了一个变通的方法。
既然注释代码比较麻烦,无法操作,我们可以使用宏来达到目的,具体实现方法是这样的
#ifdef UT
#define A A
#define B B_X
#endif
void A()
{
B();
return;
}
#ifdef UT
#define B_X B
#endif
#ifdef UT
#define B B
#define C C_X
#endif
void B()
{
C();
return;
}
#ifdef UT
#define C_X C
#endif
void C()
{
return;
}
然后在另外一个文件,例如stub.c中为B和C打桩:B_X, C_X,在source中包含桩的声明文件stub.h,就可以
实现A,B同时在一个工程中进行测试的目的了。
本文地址:http://com.8s8s.com/it/it24534.htm