在 CLion 中设置 Google 测试

Posted

技术标签:

【中文标题】在 CLion 中设置 Google 测试【英文标题】:Setup Google test in CLion 【发布时间】:2016-02-11 19:53:36 【问题描述】:

我已经在网上坐了几个小时,已经尝试在 Linux 中的 Clion 上设置 Google 测试,但没有找到任何东西。

有人可以指导我进行设置吗?

【问题讨论】:

教程在这里:youtube.com/watch?v=8Up5eNZ0FLw 【参考方案1】:

创建新项目

    在我的 ClionProjects 文件夹中创建一个存储库 cd ~/ClionProjects mkdir .repo cd .repo 从github克隆DownloadProject git clone https://github.com/Crascit/DownloadProject.git 创建一个包含 src 和测试目录的 C++ 项目

添加以下文件:

CMakeLists.txt

cmake_minimum_required(VERSION 3.3)

project(MyProjectName)

add_subdirectory(src)
add_subdirectory(test)

src/CMakeLists.txt

#set(core_SRCS ADD ALL SOURCE FILES HERE)

add_library(core $core_SRCS)
add_executable(exe main.cpp)
target_link_libraries(exe core)

[我们编译了一个库,以便我们可以将它包含在测试项目中]

测试/CMakeLists.txt

cmake_minimum_required(VERSION 3.3)

set(REPO ~/ClionProjects/.repo)

project(Test)

project(Example)

include(CTest)
enable_testing()

#set(gtest_disable_pthreads on) #needed in MinGW
include($REPO/DownloadProject/DownloadProject.cmake)
download_project(
        PROJ                googletest
        GIT_REPOSITORY      https://github.com/google/googletest.git
        GIT_TAG             master
        UPDATE_DISCONNECTED 1
        )

add_subdirectory($googletest_SOURCE_DIR $googletest_BINARY_DIR EXCLUDE_FROM_ALL)

#set(test_SRCS ADD ALL TEST SOURCE FILES HERE)
add_executable(runUnitTests gtest.cpp $test_SRCS)
target_link_libraries(runUnitTests gtest gmock core)
#add_test(runUnitTests runUnitTests) #included in all tutorials but I don't know what it actually does.

测试/gtest.cpp

#include "gtest/gtest.h"

int main(int argc, char **argv) 
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();

注意:如果您自己从事 git 项目,最好将 DownloadProject.cmakeDownloadProjects.CmakeLists.cmake.in 文件包含在项目中。

【讨论】:

我不得不从test/CMakeLists.txt 中取出core 并重写src/CMakeLists.txt。之后,它起作用了! @SyntaxRules 谢谢。 我尽可能地按照这些说明进行操作,但最终得到了Error:Configuration Debug The source directory <user Dir>/CLion2016.2/system/cmake/generated/A32N-bdb25b84/bdb25b84/Debug/googletest-src does not contain a CMakeLists.txt file.的负载 对我来说,在 test/CMakeLists.txt 中将 gmock 更改为 gtest_main 是有效的 @Dormathal。这是一个可怕的答案,导致不懂 CMake 的人搞砸了他们的整个配置。您正在让他们重写他们的 CMakeLists.txt 文件而不了解更改的影响。一个好的答案解释了每个更改的作用。例如,您可以解释为什么要创建额外的 CMakeList 文件。这是怎么得到这么多赞成的,我想不通!【参考方案2】:

1.Git克隆google-testC++测试框架

From https://github.com/google/googletest.git

2.包含 google-test 目录

#Add the google test subdirectory
add_subdirectory(PATH_TO_GOOGLETEST)

#include googletest/include dir
include_directories(PATH_TO_GOOGLETEST/googletest/include)

#include the googlemock/include dir
include_directories(PATH_TO_GOOGLETEST/googlemock/include)

3.将您的可执行文件与 google-test 链接(这是在创建可执行文件之后)

#Define your executable
add_executable(EXECUTABLE_NAME $SOURCE_FILES)

#Link with GoogleTest
target_link_libraries(EXECUTABLE_NAME gtest gtest_main)

#Link with GoogleMock
target_link_libraries(EXECUTABLE_NAME gmock gmock_main)

【讨论】:

这工作得很好......很好解释(评论)答案 这是完美的。 google repo 和 clion gtest 文档均不包含工作示例。这行得通。非常感谢【参考方案3】:

Here is a small example C++11 project which uses GoogleTest 仅依赖于打包的 CMake 功能(主要是 ExternalProject module,并且可以在 CLion 和 *nix 命令行中运行。

此版本显示“供应商”依赖项,如果需要,它可以驻留在项目之外。所有依赖构建的源代码和构建工件都包含在项目中,不会污染构建主机。但是,ExternalProject 模块很容易调整以从远程仓库下载特定版本。

如果需要在 README 中进行说明,请告诉我。

【讨论】:

示例项目的链接已失效。 更正了移动的项目链接。没有必要投反对票。

以上是关于在 CLion 中设置 Google 测试的主要内容,如果未能解决你的问题,请参考以下文章

在 WAMP 环境中设置 Concerto 自适应测试平台时出错

在 VSCode 调试器中设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量

在 CLion 中设置 OpenMP 项目 MacOS Mojave

在 CLion 和 Cmake 中设置外部头文件和链接器库的问题 [重复]

未指定 CLion 目标 - 无目标

如何在测试类的仪器测试中设置顺序?