CMake:利用Google Test库进行单元测试
导言
本篇,我们将学习如何在CMake的帮助下使用Google Test框架实现单元测试。与前一个配置(Catch2)相比,Google Test框架不仅仅是一个头文件,也是一个库,包含两个需要构建和链接的文件。可以将它们与我们的代码项目放在一起,但是为了使代码项目更加轻量级,我们将选择在配置时,下载一个定义良好的Google Test,然后构建框架并链接它。我们将使用较新的FetchContent模块(从CMake版本3.11开始可用)。关于FetchContent相关使用将在后续的笔记中学习。
此外,我们将在相关测试内容学习完成后挑选一个框架(Google Test目前更加流行)写一个小的项目实践,尽可能多的将该框架下的功能加以熟悉。
项目结构
NOTE
main.cpp、sum_integers.cpp和sum_integers.hpp与上一篇内容相同,我们对test.cpp将做相关的修改。
.
├── CMakeLists.txt
├── main.cpp
├── sum_integers.cpp
├── sum_integers.h
└── test.cpp
项目地址:
https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter4/03
CMakeLists.txt
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
project(test_gtest LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
add_library(sum_integers sum_integers.cpp)
add_executable(sum_up main.cpp)
target_link_libraries(sum_up sum_integers)
option(ENABLE_UNIT_TESTS "Enable unit tests" ON)
message(STATUS "Enable testing: ${ENABLE_UNIT_TESTS}")
if(ENABLE_UNIT_TESTS)
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://gitcode.net/mirrors/google/googletest.git
GIT_TAG release-1.8.0
)
FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)
FetchContent_Populate(googletest)
# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
# Prevent GoogleTest from using PThreads
set(gtest_disable_pthreads ON CACHE BOOL "" FORCE)
# adds the targers: gtest, gtest_main, gmock, gmock_main
CMake教程:利用GoogleTest进行单元测试与FetchContent集成,

本文介绍了如何在CMake项目中使用GoogleTest进行单元测试,利用FetchContent模块下载并集成GoogleTest库,同时展示了如何配置CMakeLists.txt以支持单元测试并编写测试用例。
最低0.47元/天 解锁文章
9958

被折叠的 条评论
为什么被折叠?



