c - 自动测试字符串处理功能

标签 c unit-testing

我编写了一个等待用户字符输入的控制台应用程序。

应用程序具有以下功能:

    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/

相关文章:

qt - 将单元测试项目添加到现有的 Qt Creator 项目

C程序给出与计算器不同的答案

ios - 在NSOperation上使用OCMock会导致错误的访问

android - 单元测试 viewModel 和 livedata Mockito android

c - scanf 提前终止 while 循环(我认为)

unit-testing - CMake:如何对自己的 CMake 脚本宏/功能进行单元测试?

c# - 使用 C# 流畅界面的 FsCheck 不是空字符串生成器

c - poll() 函数返回一个非零正值,没有来 self 注册的套接字的事件

c - 为什么具有以下代码的程序会崩溃?如何解决这个问题?

c - gcc 优化、const 静态对象和限制