gpt4 book ai didi

c++ - 如何为单元测试生成文件打开失败

转载 作者:行者123 更新时间:2023-11-28 01:57:47 25 4
gpt4 key购买 nike

为了完整起见,我在 Windows 7 下的 Visual Studio 2012 中使用 C++。

我有一些基本的文件读取代码:

在类中定义:

std::ifstream iniFileHandle;

有问题的方法:

FileLoader::FILE_STATUS FileLoader::loadFile(const std::string& fullpathandfilename)
{
if (fullpathandfilename.empty())
{
iniFileStatus = FILE_NOT_SPECIFIED;
}
else // parameter has 'something'...
{
if (!doesFileExist(fullpathandfilename))
{
iniFileStatus = FILE_NOT_FOUND;
}
else // file found...
{
iniFileHandle.open(fullpathandfilename, std::ios::in);

if (!iniFileHandle.is_open()) // something went wrong
{
iniFileStatus = FILE_CANNOT_LOAD; // <== HOW TO TEST?
}
else // file opened!
{
iniFileStatus = FILE_OPEN;
}
}
}

return iniFileStatus;
}

所有这些工作正常,但我很难覆盖 Google 单元测试。

我缺少的是一种模拟/创建 is_open() 失败场景的方法。

我试过:

  • 只读文件
  • 当前正在运行的“exe”
  • 在另一个应用程序中打开的文件但它们都打开了。

这种错误情况真的有可能发生吗?如果是这样,我如何模拟故障以便对其进行测试?

最佳答案

如评论中所述,尝试打开目录将导致 is_open() 返回 false。您尝试的所有案例都成功了,因为您以只读方式打开文件(std::ios::in,这也是 ifstream 的默认设置)。

关于c++ - 如何为单元测试生成文件打开失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40585003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com