在单元测试中经常需要动态的替换被测函数调用的其他函数,这个替换叫做打桩,现在很少有动态打桩的函数,研究了许久,写了这个功能,做成了lib库,在cygwin下生成的。
给出了一个Demo,使用makefile试一试吧!
ps:我目前只在windowsxp下应用,其他平台未知!欢迎发邮件给我。
#include "stdio.h"
#include "d_stub.h"
void testfunc(int arg, int a, int b, int c)
{
printf("\tI am testFunc %d\n", arg);
}
void testfunc1(int arg, int a, int b, int c)
{
printf("\t******************\n\tI am stub function\n");
printf("\tArguments: %d %d %d %d\n\t******************\n", arg, a, b, c);
}
void testfunc2(int arg, int a, int b, int c)
{
printf("\tHello world\n");
}
main()
{
stubInfo si, ss;
printf("call original func:\n");
testfunc(1, 2, 3, 4);
setStub(testfunc, testfunc1, &si);
setStub(testfunc1, testfunc2, &ss);
printf("after set stub for func1 and func2:\n");
testfunc(1, 2, 3, 4);
cleanStub(&ss); /*recover testfunc1*/
printf("after clear stub for func2:\n");
testfunc(1, 2, 3, 4);
cleanStub(&si); /*recover testfunc*/
printf("after clear stub for func1::\n");
testfunc(1, 2, 3, 4);
}
1