在CLion中使用CMake的CTest运行测试

6
我有一个使用 CMake 的 C++ 项目,该项目在 CentOS 机器上构建。我已经配置了 CLion 来自 MacOS 远程构建。我对该项目进行了单元测试,并尝试从 CLion 中运行它们。我可以通过以下方式在 CentOS 机器上使用 CTest 运行测试。
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? - Maxim Banaev
4个回答

3
您可以轻松配置CLion使用CTest。只需复制测试目标的默认配置,并将其配置为使用CTest可执行文件,并将工作目录设置为构建目录: enter image description here 详细步骤如下:
  • 可执行文件 > 选择其他... > 查找并选择ctest(对于我来说是/usr/bin/ctest,在类Unix系统上,您可以使用which ctest查找它)
  • 设置程序参数- -j设置要使用的线程数,然后是要测试的可执行文件的名称,以及--output-on-failure以在出现问题时获取测试输出- 您可以将其简单地设置为-r utCppProject -v
  • 将工作目录设置为项目目录下的cmake-build-debug,这是CLion的默认构建目录

3
自CLion 2020.3 EAP版本起,CTest已经被默认支持,无需额外安装插件。详见此链接

2

自从CLion 2020.3 EAP版本发布以来,它已经更新了(CPP-905也相应更新)。 - uta

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接