【问题标题】:Running Tests in CLion using CMake's CTest使用 CMake 的 CTest 在 CLion 中运行测试
【发布时间】:2020-01-27 03:43:39
【问题描述】:

我有一个使用 CMake 的 C++ 项目。该项目建立在 CentOS 机器上。我已将 CLion 配置为从 MacOS 远程构建。我有项目的单元测试,我正在尝试从 CLion 运行它们。我可以使用 CTest 在 CentOS 机器上运行测试,如下所示

ctest -r utCppProject -v

CLion 尝试使用下面的 gtest 标志直接运行可执行文件

./utCppProject --gtest_filter=* --gtest_color=no
Process finished with exit code 0

实际上没有运行任何测试。

如何配置 CLion 以使用 CTest 运行单元测试?

这是我的单元测试项目的 CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

include(../../cmake-dependencies/Boost.cmake)
include(../../cmake-dependencies/GoogleTest.cmake)

set(CMAKE_BINARY_DIR "${CMAKE_CURRENT_LIST_DIR}/../build")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)


include_directories(${GOOGLE_TEST_DIR}/googletest/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/.)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)


set(TARGET utCppProject)

add_executable (
   ${TARGET}
   utCppProject.cpp
)

target_link_libraries (
    ${TARGET}
    CppProject
    gtest
    boost_system
    pthread
)

set(CMAKE_CXX_FLAGS "-fPIC -DPIC -Wall -Werror -std=c++0x")

set(TEST_OUTPUT "${CMAKE_BINARY_DIR}/test_results/${TARGET}.xml")
add_test(${TARGET} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET})
set_tests_properties(${TARGET} PROPERTIES
  ENVIRONMENT 
  "UT_FOLDER_PATH=${CMAKE_CURRENT_SOURCE_DIR};GTEST_OUTPUT=xml:${TEST_OUTPUT}")

【问题讨论】:

  • @adsum 您是否创建了 GTest 运行配置来运行 CTest?

标签: c++ cmake googletest clion ctest


【解决方案1】:

由于 CLion 2020.3 EAP CTest 是supported from the box

【讨论】:

    【解决方案2】:

    您可以轻松配置 CLion 以使用 CTest。只需复制测试目标的默认配置并将其配置为使用 CTest 可执行文件并将工作目录设置为构建目录:

    详细说明:

    • 可执行 > 选择其他... > 查找并选择 ctest(对我来说是 /usr/bin/ctest,在类 UNIX 系统上可以使用 which ctest 找到它)
    • 设置程序参数 - -j 设置要使用的线程数量,然后是要测试的可执行文件的名称,--output-on-failure 在出现问题时获取测试输出 - 您可以简单地将其设置为 -r utCppProject -v
    • 将工作目录设置为项目目录下的cmake-build-debug,CLion的默认构建目录

    【讨论】:

      【解决方案3】:

      CLion 目前不支持 CTest。

      FeatureRequest 在这里:https://youtrack.jetbrains.com/issue/CPP-905(请点赞!)

      【讨论】:

      • 从 CLion 2020.3 EAP 开始就是这样。 (CPP-905 相应更新)
      【解决方案4】:

      自 CLion 2020.3 版本起,CTest 为 supported from the box for CMake 3.14 and above

      【讨论】:

        猜你喜欢
        • 2016-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 2016-01-17
        • 1970-01-01
        相关资源
        最近更新 更多