C 字符串处理功能的自动测试
我已经编写了一个控制台应用程序,它等待用户char输入 应用程序具有以下功能:C 字符串处理功能的自动测试,c,unit-testing,C,Unit Testing,我已经编写了一个控制台应用程序,它等待用户char输入 应用程序具有以下功能: typedef char *ProcessedDataType; extern ProcessedDataType askUserInput(void){ int i = getchar(); ProcessedDataType local_var = userInputProcessed(i); return ProcessedDataType;
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等
我不想在这里使用预处理器:除了“getchar”显然只收集一个字符之外。。。。因此,我用“getchars”方法替换了这个方法,但最终您可以用实际需要的方法替换它 您需要在测试中模拟收集用户输入的方法
#define getchars mockgetchars
const char* expected;
char mockgetchars() {
return expected;
}
expected = "AAAAAAA\n";
ProcessedDataType local_var = askUserInput();
assert("AAAAAAA", local_var);
getchar
如何获取9个字符?返回ProcessedDataType代码>WTF?请提供可编译代码。什么是assert('ProcessedA'==local\u var)代码>支持做什么?请发布显示您尝试过的内容的,而不是一些幻想。typedef是否消除了混淆?避免typedeffing指针,它只会导致整个代码的混淆。typedef char*ProcessedDataType到底是怎么处理的代码>比字符短*
?这就是他们所说的“抽象数据类型”!?经过长时间的讨论,你能指出为什么这样抽象不是一个好主意吗?如果你不想使用getchars,你可以(并且你将要更新你的应用程序,让它多次调用getchars。你可以用“expected++”替换mock getchars return可能,但您的SUT和测试线束之间失去了控制。您可以从测试线束中的文件读取以填充“预期”值。