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

时间:2019-03-06 16:56:34

标签: c++ unit-testing googletest

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

/SoftwareHomeDir/Configuration/Application/dataFile.txt

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

/ProjectName/config/Application/dataFile.txt

我正在gtest中开发一个unitTest,它可以执行以下操作:

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的编译环境中对代码进行单元测试的解决方案

1 个答案:

答案 0 :(得分:0)

解决我的问题的方法是将gmock与gtest结合起来,如链接所述

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

我对代码进行的唯一修改是,我没有使用#define定义配置数据的路径,而是创建了一个函数getConfigFilePath(),该函数返回已安装的应用程序中配置文件的硬编码路径。从这里开始,我对类进行了模拟,并在模拟中调用了一个伪造的getConfigFilePath(),当实际代码执行时,它返回ClearCase项目树中配置文件的硬编码路径。这正是我想要的。