我编写了一个等待用户字符输入的控制台应用程序。
应用程序具有以下功能:
typedef char *ProcessedDataType;
extern ProcessedDataType askUserInput(void){
int i = getchar();
ProcessedDataType local_var = userInputProcessed(i);
return ProcessedDataType;
}
static ProcessedDataType userInputProcessed(int i){
...
return PocessedDataType;
}
现在,我想针对多个输入测试此函数。因此,通常情况下,光标会在用户输入时闪烁,现在,包含选择字母的文件中的条目会自动返回。然后根据已知结果断言这一点。
runTest{
// when console gets input 'A'
ProcessedDataType local_var = askUserInput();
assert('ProcessedA' == local_var); }
// when console gets input 'B'
ProcessedDataType local_var = askUserInput();
assert('ProcessedB' == local_var); }
// when console gets input 'C'
ProcessedDataType local_var = askUserInput();
assert('ProcessedC' == local_var); }
测试时如何向该函数提供相同的字符串参数?如何向控制台“提供”输入 A、B、C 等...
我不想使用预处理器,如下所示:How to unit test c functions involving IO?
最佳答案
除了明显的“getchar”只会收集一个字符......因此,我用“getchars”方法替换了此方法,但您最终可以替换为您实际需要的内容。
您需要在测试中模拟收集用户输入的方法。
#define getchars mockgetchars
const char* expected;
char mockgetchars() {
return expected;
}
expected = "AAAAAAA\n";
ProcessedDataType local_var = askUserInput();
assert("AAAAAAA", local_var);
关于c - 自动测试字符串处理功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37398769/