Google 使用 fstream 的测试方法

Google Test methods with fstream

我想编写 Google 测试方法,即 return void 并采用两个参数:文件 1 的文件路径和文件 2 的文件路径。此方法读取第一个文件中的一些数据并创建第二个文件,此数据写入何处。为此,我使用 std::ifstreamstd::ofstream。在测试中,我想调用我的方法,然后检查是否创建了第二个文件:

TEST_F(ConverterTest, Convert) {
  converter.ConvertToBin(std::string("file1.txt"), std::string("file2.txt"));
  std::ifstream data("file2.txt");
  EXPECT_TRUE(data.is_open());
}

我创建了 file1 和 运行 测试。但是这个测试失败了,因为在方法 ConvertToBin() -std::basic_ifstream.is_open() 中失败了(return false)。 file1 的路径完全正确。

#include <fstream>
void Converter::ConvertToBin(const std::string& src_path,
                             const std::string& dst_path) {
  input_stream_ = std::ifstream(src_path, std::ios::in);
  if (!input_stream_.is_open())
    throw(std::string("Error."));

  output_stream_ = std::ofstream(dst_path,
                                 std::ios::binary | std::ios::out);
  if (!output_stream_.is_open())
    throw(std::string("Error."));

  ...
}

即使在我的测试中我只创建了 std::ifstream(不要调用 converter.ConvertToBin()),之前在我的目录中创建了 "file2.txt",data.is_open() return 也是假的。我确定我正在通过正确的路径。我真的不能在 Google 测试中使用 fstream 吗?还是我做错了什么?

我的测试class:

#include <gtest/gtest.h>
#include "src/converter/converter.h"

class ConverterTest : public ::testing::Test {
 protected:
  ConverterTest() = default;
  Converter converter;
};

没关系。在项目构建系统中,指向根目录的路径不正确。因此文件路径错误。