gtest单元测试目标配置文件路径

gtest unit tests target configuration file path

在我的 C++ 应用程序中,我有一个文本文件 (dataFile.txt) 安装在 Linux 目标机器的以下路径中:

/SoftwareHomeDir/Configuration/Application/dataFile.txt

此文件存在于我的 Rational ClearCase 源代码环境中的路径下:

/ProjectName/config/Application/dataFile.txt

我正在 gtest 中开发一个单元测试,它执行以下操作:

dataFile.txt读取特定数据,如果数据不存在则将其写入文件。

1) 我避免创建环境变量来检查我是在编译环境还是在目标机器中。然后在最终版本中添加额外的测试代码。我真的很想把测试代码和最终代码分开。

2) 我没有使用任何 IDE(没有 visual studio、没有 qt 等),只是记事本++

3) 编译。服务器是共享的(使用用户名访问,但是根文件夹“/”是共享的。这意味着如果我创建路径 "/SoftwareHomeDir/Confiugration/Application/dataFile.txt",所有用户都可以看到它,如果另一个用户是 运行宁他的 gtest unitTest,他可能会覆盖我的文件。

4) 在最后的代码中,dataFile 的路径是硬编码的,实现一个 filesearch(filename) 方法来寻找在读取文件之前将文件放入整个硬盘。

问题:

我正在寻找在使用 /ProjectName/config/Application/dataFile.txt

的编译环境中对我的代码进行单元测试的解决方案

我的问题的解决方案是按照 link

所述将 gmock 与 gtest 结合起来

https://github.com/google/googletest/blob/master/googlemock/docs/CookBook.md#delegating-calls-to-a-fake

我对代码所做的唯一修改是,我没有使用#define 定义配置数据的路径,而是创建了一个函数 getConfigFilePath(),returns 配置文件的硬编码路径位于安装的应用程序。从这里开始,我模拟了 class,在我的模拟中,我调用了一个伪造的 getConfigFilePath() returns,当真正的代码正在执行时,ClearCase 中项目树中配置文件的硬编码路径.这正是我要找的。