Запуск тестов в CLion с использованием CMake CTest

У меня есть проект C ++ с использованием CMake. Проект построен на машине 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}")

person adsun    schedule 26.09.2019    source источник
comment
@adsum, я прав, что вы создаете конфигурацию запуска GTest для запуска CTest?   -  person Maxim Banaev    schedule 04.10.2019


Ответы (4)


Вы можете легко настроить CLion для использования CTest. Просто продублируйте конфигурацию по умолчанию для тестовой цели и настройте ее для использования исполняемого файла CTest и установите рабочий каталог в каталог сборки: введите описание изображения здесь

В деталях:

  • Исполняемый файл ›Выбрать другое ...› Найти и выбрать ctest (для меня это /usr/bin/ctest, в UNIX-подобных системах вы можете использовать which ctest, чтобы найти его)
  • Задайте аргументы программы - -j задает количество используемых потоков, затем имя исполняемого файла для тестирования и --output-on-failure, чтобы получить тестовый результат, когда что-то пошло не так - вы можете просто установить его на -r utCppProject -v
  • Установите рабочий каталог на cmake-build-debug в каталоге проекта, каталог сборки по умолчанию для CLion
person Xerus    schedule 06.07.2020

Начиная с CLion 2020.3 EAP CTest поддерживается из коробки.

person uta    schedule 25.09.2020

В настоящее время в CLion нет поддержки CTest.

FeatureRequest находится здесь: https://youtrack.jetbrains.com/issue/CPP-905 (Пожалуйста, проголосуйте за!)

person arved    schedule 03.02.2020
comment
Начиная с CLion 2020.3 EAP это так. (CPP-905 обновлен соответственно) - person uta; 25.09.2020

Начиная с версии CLion 2020.3 CTest поддерживается из коробка для CMake 3.14 и выше.

person uta    schedule 25.12.2020