【问题标题】:Working directory for google test in Visual StudioVisual Studio 中 google 测试的工作目录
【发布时间】:2013-04-25 12:56:07
【问题描述】:

我有一个使用 CMake 生成的 Visual Studio 2012 C++ 解决方案,其中我使用 google test 进行单元测试。这工作得很好,但在我的一个测试中,我想从本地目录中读取一个设置文件。为了找到该文件,我使用以下 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 项目并启动调试会话也可以找到。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    1. 工具
    2. 选项
    3. Google 测试适配器(或使用搜索选项)
    4. 常规
    5. 工作目录(在底部)

    不幸的是,GTA 似乎只支持$(ExecutableDir)(默认)和$(SolutionDir)。看来GTA无法分辨出哪个项目是单元测试项目,所以无法将项目目录作为起始目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多