在Visual Studio中进行Google测试的工作目录

时间:2013-05-01 14:06:11

标签: c++ visual-studio-2012 cmake googletest

我有一个使用CMake生成的Visual Studio 2012 C ++解决方案,其中我使用谷歌测试进行单元测试。这很好用,但在我的一个测试中,我想从本地目录中读取设置文件。要查找文件,我使用以下CMake命令将文件作为构建后步骤从源代码树复制到构建和安装目录:

install(FILES ./adapters/settingFile.txt DESTINATION .)
add_custom_command(TARGET testAdapters POST_BUILD 
  COMMAND "${CMAKE_COMMAND}" -E copy 
     "${CMAKE_CURRENT_SOURCE_DIR}/adapters/settingFile.txt"
     "${CMAKE_CURRENT_BINARY_DIR}"
  COMMENT "Copying elastix parameter files")

这很好用:构建测试后,settingFile.txt与testAdapters.exe位于同一位置。右键单击testAdapters项目并启动Debug会话也可以找到。

但是,如果我选择在“测试资源管理器”窗口中运行测试,或者通过“全部运行”或右键单击测试并选择“运行所选测试”,则测试无法找到settingsFile.txt。通过右键单击并选择“Debug selected tests”,我发现从“Test Explorer”运行测试工作目录默认为visual studio程序目录:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE。我可以想到几种可能的解决方案,但不知道如何实现这个目标:

  1. 设置“测试资源管理器”的工作目录
  2. 为每个测试可执行文件设置工作目录
  3. 设置所有Google测试的工作目录
  4. 使用CMake设置一些指向用户指定位置的定义,并在测试代码中使用它。 (我认为这是一个相当丑陋的解决方案)
  5. 我需要一个独立于平台的解决方案。有谁知道如何实现(1)或(2)或者你知道更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

使用当前版本的GTA 0.12.3,您至少可以达到(1):

  1. 工具
  2. 选项
  3. Google测试适配器(或使用搜索选项)
  4. 一般
  5. 工作目录(位于底部)
  6. 不幸的是,GTA似乎只支持$(ExecutableDir)(默认值)和$(SolutionDir)。似乎GTA无法判断哪个项目是单元测试项目,因此无法将项目目录用作起始目录。

    Screenshot of GTA options dialog