【发布时间】:2016-05-23 19:13:42
【问题描述】:
我编写了一个等待用户字符输入的控制台应用程序。
应用具有功能:
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如何获得 9 个字符? -
return ProcessedDataType;WTF?请提供可编译的代码。assert('ProcessedA' == local_var);应该做什么?请张贴Minimal, Complete, and Verifiable example,这表明您已经尝试过,而不是幻想。 -
typedef 能消除混乱吗?
-
避免 typedefing 指针,它只会导致整个代码的混乱。
typedef char *ProcessedDataType;到底怎么比char *短? -
这就是他们所说的“抽象数据类型”!?进行了详细的讨论,您能否说明为什么这样的抽象不是一个好主意?
标签: c unit-testing