单元测试的一种新思路

类别:编程语言 点击:0 评论:0 推荐:
假设我们要测试的目标文件为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