运行 使用 CMake 的 CTest 在 CLion 中进行测试
Running Tests in CLion using CMake's CTest
我有一个使用 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}")
CLion 目前不支持 CTest。
您可以轻松配置 CLion 以使用 CTest。只需复制测试目标的默认配置并将其配置为使用 CTest 可执行文件并将工作目录设置为构建目录:
详细:
- Executable > Select other... > Find and select ctest(对我来说是
/usr/bin/ctest
,在类 UNIX 系统上你可以使用 which ctest
来找到它)
- 设置程序参数 -
-j
设置要使用的线程数量,然后是要测试的可执行文件的名称,以及 --output-on-failure
以在出现问题时获取测试输出 - 你可以简单地将其设置为 -r utCppProject -v
- 将工作目录设置为项目目录下的
cmake-build-debug
,CLion 的默认构建目录
自 CLion 2020.3 EAP CTest 开始为 supported from the box。
从 CLion 2020.3 版本开始,CTest 为 supported from the box for CMake 3.14 and above。
我有一个使用 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}")
CLion 目前不支持 CTest。
您可以轻松配置 CLion 以使用 CTest。只需复制测试目标的默认配置并将其配置为使用 CTest 可执行文件并将工作目录设置为构建目录:
详细:
- Executable > Select other... > Find and select ctest(对我来说是
/usr/bin/ctest
,在类 UNIX 系统上你可以使用which ctest
来找到它) - 设置程序参数 -
-j
设置要使用的线程数量,然后是要测试的可执行文件的名称,以及--output-on-failure
以在出现问题时获取测试输出 - 你可以简单地将其设置为-r utCppProject -v
- 将工作目录设置为项目目录下的
cmake-build-debug
,CLion 的默认构建目录
自 CLion 2020.3 EAP CTest 开始为 supported from the box。
从 CLion 2020.3 版本开始,CTest 为 supported from the box for CMake 3.14 and above。