C 中的Google单元测试:如何编写持久数据文件

Google unit testing in C++: how to write a persistent data file?

本文关键字:数据 文件 何编写 中的 Google 单元测试      更新时间:2023-10-16

问题:

1)C Google单元测试创建的文件是从哪里创建的?

2)是否有一种方法可以在C Google单元测试中编写持久数据文件,以便在测试运行后可以访问该文件?

代码和所需的行为

我正在使用catkin_make在Ubuntu 14.04上运行单元测试。我希望代码在测试运行后可以在某个地方写一个文件。以下代码写入一个文件,但我不知道该文件的去向,或者在单元测试完成后是否持续。

TEST(GUnitTestFileIo, Test_One)
{
  std::ofstream csvFile;
  csvFile.open("helloWorldTestFile.csv");
  if (csvFile.is_open()) {
    csvFile << "Hello, World, !" << std::endl;
    csvFile.close();
  } else {
    std::cout << "Failed to open the file!" << std::endl;
  }
}
int main(int argc, char **argv){
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

一种解决方案就是简单地写入绝对文件路径。以下代码从Google单元测试的内部将文件写入用户的主目录:

TEST(GUnitTestFileIo, Test_One)
{
  char const* tmp = getenv( "HOME" );
  if ( tmp == NULL ) {
    std::cout << "$(HOME) environment variable is not defined!";
  } else {
    std::string home( tmp );  // string for the home directory
    std::ofstream csvFile;  // write the file
    csvFile.open(home + "/helloWorldTestFile.csv");
    if (csvFile.is_open()) {
      csvFile << "Hello, World, !" << std::endl;
      csvFile.close();
    } else {
      std::cout << "Failed to open the file!" << std::endl;
    }
  }
}
// Run all the tests that were declared with TEST()
int main(int argc, char **argv){
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}