如何对涉及文件输入输出的方法进行单元测试?

INS*_*INS 4 c++ unit-testing file stub

我正在使用Parasoft的C++ Test来测试C++代码.我遇到了以下问题.我有一个类似下一个函数(伪代码):

bool LoadFileToMem(const std::string& rStrFileName)
{
    if( openfile(rStrFileName) == successfull )
    {
         if( get_file_size() == successfull )
         {
            if( read_entire_file_to_buffer() == successfull )
            {
                return true;
            }
            return false;
         }
         return false;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我在这种情况下的问题是:

我应该使用存根文件系统功能吗?或者我应该包含用于运行单元测试的特定样本测试文件?

在我的例子中,std :: fstream类用于文件输入.

有没有更好的建议?(如果在C++测试中完成但不是强制性的最佳).

qua*_*dev 7

我会去寻找简短的样本测试文件.可以将它们与测试代码一起检入源代码控制.我这样做的原因是你的函数的意图是加载一个文件,所以这就是你应该测试的.


小智 5

对于此功能的单元测试,应为每个调用的函数使用存根。

然后,每个被调用的函数都有其自己的单元测试套件,用于执行该功能。

对于read_entire_file_to_buffer(),您希望至少一个测试文件大量溢出缓冲区,以验证当它们为您提供纽约证券交易所历史记录而不是您期望的40个字符的配置文件时,您不会崩溃或烧毁。