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

时间:2019-09-26 20:00:16

标签: c++ cmake googletest clion 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}")

3 个答案:

答案 0 :(得分:1)

CLion当前不支持CTest。

FeatureRequest在此处:https://youtrack.jetbrains.com/issue/CPP-905(请上传!)

答案 1 :(得分:1)

您可以轻松配置CLion以使用CTest。只需复制测试目标的默认配置,并将其配置为使用CTest可执行文件,然后将工作目录设置为build目录: enter image description here

详细信息:

  • 可执行文件>选择其他...>查找并选择ctest(对我来说,它是import tkinter from tkinter import * def submit(): file = open('database.txt', 'w') file.write('Username:', un, '\nPassword:', pw) file.close() wn = Tk() wn.geometry('500x200') Label(text='Geben Sie hier Ihren Benutzername ein:').pack() username = Entry().pack() Label(text='\n').pack() Label(text='Geben Sie hier Ihr Passwort ein:').pack() password = Entry().pack() Label(text='\n').pack() un = str(username.get()) pw = str(password.get()) btn = Button(text='Submit', command=submit).pack() wn.mainloop() ,在类似UNIX的系统上,您可以使用/usr/bin/ctest来找到它)
  • 设置程序参数-which ctest设置要使用的线程数量,然后设置要测试的可执行文件的名称,以及-j设置出现问题时的测试输出-您可以简单地设置它到--output-on-failure
  • 在项目目录(CLion的默认构建目录)下,将工作目录设置为-r utCppProject -v

答案 2 :(得分:1)

由于CLion 2020.3 EAP CTest为supported from the box