Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 字符串处理功能的自动测试_C_Unit Testing - Fatal编程技术网

C 字符串处理功能的自动测试

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;

我已经编写了一个控制台应用程序,它等待用户char输入

应用程序具有以下功能:

    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个字符?
返回ProcessedDataTypeWTF?请提供可编译代码。什么是
assert('ProcessedA'==local\u var)支持做什么?请发布显示您尝试过的内容的,而不是一些幻想。typedef是否消除了混淆?避免typedeffing指针,它只会导致整个代码的混淆。
typedef char*ProcessedDataType到底是怎么处理的比字符短*
?这就是他们所说的“抽象数据类型”!?经过长时间的讨论,你能指出为什么这样抽象不是一个好主意吗?如果你不想使用getchars,你可以(并且你将要更新你的应用程序,让它多次调用getchars。你可以用“expected++”替换mock getchars return可能,但您的SUT和测试线束之间失去了控制。您可以从测试线束中的文件读取以填充“预期”值。