【发布时间】:2020-01-01 05:02:36
【问题描述】:
我正在使用 Google Test 测试 C 代码,但遇到了 为系统函数编写 Stub 问题,例如:fopen,fclose,fread,fwrite,memcpy,memset,stat,...I不知道如何正确存根其输入/输出以方便测试,而无需关心真实数据。示例如下:
bool open_file(void)
{
FILE *srcfd;
FILE *destfd;
int dataLen;
bool retVal=false;
char buffer[255];
srcfd = fopen("srcFileName", "r");
if(NULL != srcfd)
{
destfd = fopen("destFileName", "w+");
if(NULL != destfd)
{
retVal = true;
while ((true == retVal) &&
((dataLen = fread(buffer, sizeof(char), sizeof(buffer), srcfd)) > 0))
{
if (fwrite(buffer, sizeof(char), dataLen, destfd) != dataLen)
{
retVal = false;
}
}
fclose(destfd);
}
else
{
printf("%s: Failed to create file '%s'...\n",
__func__, "destFileName");
}
fclose(srcfd);
}
else
{
printf("%s: Failed to create file '%s'...\n", __func__, "srcFileName");
}
return retVal;
}
【问题讨论】:
-
在您的问题中,第2点不清楚,第4点无法回答,问“我如何调试”太宽泛了。
-
我的意思是,我需要一些示例和解决方法
-
给出你想要测试的代码和你想要存根的函数的例子。
-
我举了个例子
标签: c unit-testing googletest