2013-05-01 84 views
6

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

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项目并启动调试会话也可以查找。

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

  1. 设置“测试资源管理器”的工作目录
  2. 设置每个测试可执行
  3. 工作目录设置所有谷歌测试的工作目录
  4. 使用CMake设置一些定义,指向用户指定的位置并在测试代码中使用它。 (我认为这是一个相当难看的解决方案)

我需要一个独立于平台的解决方案。有人知道如何实现(1)或(2)或者你知道更好的解决方案吗?

回答

0

与当前版本的GTA的0.12.3你至少可以达到(1):

  1. 工具
  2. 选项
  3. 谷歌测试适配器(或使用搜索选项)
  4. 一般
  5. 工作指南(底部)

不幸的是G TA似乎只支持$(ExecutableDir)(默认)和$(SolutionDir)。看来GTA不能告诉哪个项目是单元测试项目,所以不可能使用项目目录作为开始目录。

Screenshot of GTA options dialog