我面臨將單元測試寫入涉及IO操作的C函數的問題。例如,下面是我寫的從控制檯獲取用戶輸入字符串的代碼。我不知道如何使用getchar()函數自動測試用戶輸入。如何對涉及IO的c函數進行單元測試?
char * GetStringFromConsole()
{
char *strToReturn = NULL;
int len = 128;
strToReturn = (char*)malloc(len);
if (strToReturn)
{
int ch;
char *ptr = strToReturn;
int counter = 0;
for (; ;)
{
ch = getchar();
counter++;
if (counter == len)
{
strToReturn = realloc(strToReturn, len*=2);
ptr = strToReturn + counter-1;
}
if ((ch != EOF) && (ch != '\n') && (counter < len))
{
*ptr++ = ch;
}
else
{
break;
}
}
*ptr = '\0';
}
return strToReturn;
}
您可以創建一個shell腳本來運行您的程序並將其輸出與某些預期內容進行比較。 –