GoogleTest 使用指南 | 安装 GoogleTest

googletest单元测试框架安装及使用 1、下载googletest 介绍:现在的googletest软件包分两部分,一部分是gtest,单元测试框架,实现对单元测试用例的管理和设计,另一部分是gmock,实现打桩功能,这两个可以结合起来使用,当然如果不使用gmock,只是用googletest也可以。我就不喜欢gmock进行打桩,它使用起来太麻烦,而是使用自己实现的函数hook方式的函数拦截,这样更直接了当,相率高。 下载官网:GitHub - google/googletest: GoogleTest - Googl... 阅读详情

GoogleTest 使用指南 | 安装 GoogleTest

使用包管理器安装

Ubuntu/Debian

# 安装
sudo apt-get update
sudo apt-get install libgtest-dev cmake

# 注意:某些版本需要手动编译
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp lib/*.a /usr/lib

# 或者安装预编译版本(Ubuntu 18.04+)
sudo apt-get install libgtest-dev libgmock-dev

macOS(Homebrew)

# 安装
brew install googletest

# 查看安装位置
brew list googletest

# 通常安装在:
# /usr/local/Cellar/googletest/版本号/  (Intel Mac)
# /opt/homebrew/Cellar/googletest/版本号/  (Apple Silicon)

Windows(vcpkg)

# 安装 vcpkg
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat

# 安装 GoogleTest
.\vcpkg install gtest:x64-windows
# 或包含 GMock
.\vcpkg install gtest[gmock]:x64-windows

# 集成到 CMake
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake

CentOS/RHEL/Fedora

# Fedora
sudo dnf install gtest gtest-devel gmock gmock-devel

# CentOS/RHEL (需要 EPEL)
sudo yum install epel-release
sudo yum install gtest gtest-devel

Arch Linux

sudo pacman -S gtest gmock

使用 CMake 集成

现代 CMake 项目可以通过 FetchContent 直接引入 Google Test:

# 下载并包含 GoogleTest
include(FetchContent)
FetchContent_Declare(
    googletest
    # 对于 GoogleTest 1.11以及后续版本,可能需要使用 GIT_REPOSITORY 和 GIT_TAG 来代替 URL
    URL https://gitee.com/mirrors/googletest/repository/archive/main.zip
)
# 下载并使 GoogleTest 可用
FetchContent_MakeAvailable(googletest)

or:

include(FetchContent)
FetchContent_Declare(
    googletest
    GIT_REPOSITORY https://github.com/google/googletest.git
    GIT_TAG        v1.14.0  # 指定版本
)
FetchContent_MakeAvailable(googletest)

使用镜像 URL 下载 GoogleTest 源码会快一些,你也可以使用原 URL:
https://github.com/google/googletest/archive/refs/heads/main.zip

Git Submodule 方法

添加为子模块:

# 在项目根目录
mkdir third_party
cd third_party

# 添加 googletest 作为子模块
git submodule add https://github.com/google/googletest.git
git submodule update --init --recursive

# 提交更改
git add .
git commit -m "Add googletest as submodule"

CMakeLists.txt 配置:

cmake_minimum_required(VERSION 3.14)
project(my_project)

# 添加子目录
add_subdirectory(third_party/googletest)

# 包含目录
include_directories(${gtest_SOURCE_DIR}/include)
include_directories(${gmock_SOURCE_DIR}/include)

# 添加测试
add_executable(my_tests test/test_main.cpp)
target_link_libraries(my_tests gtest_main gmock)

更新子模块:

# 更新到最新版本
cd third_party/googletest
git checkout v1.14.0
cd ../..
git add third_party/googletest
git commit -m "Update googletest to v1.14.0"

# 克隆包含子模块的项目
git clone --recurse-submodules https://github.com/user/project.git
# 或者
git clone https://github.com/user/project.git
git submodule update --init --recursive

源码编译安装

下载和编译:

# 下载源码
git clone https://github.com/google/googletest.git
cd googletest

# 创建构建目录
mkdir build && cd build

# 配置(根据需求调整选项)
cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_GMOCK=ON \
    -Dgtest_force_shared_crt=ON

# 编译
make -j$(nproc)

# 安装(需要管理员权限)
sudo make install

自定义安装位置:

# 安装到用户目录
cmake .. \
    -DCMAKE_INSTALL_PREFIX=$HOME/.local \
    -DBUILD_SHARED_LIBS=ON

make -j$(nproc)
make install

# 设置环境变量
export CMAKE_PREFIX_PATH=$HOME/.local:$CMAKE_PREFIX_PATH
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH

在项目中使用:

# CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(my_project)

# 查找已安装的 GoogleTest
find_package(GTest REQUIRED)

add_executable(my_tests test/test_main.cpp)
target_link_libraries(my_tests GTest::gtest_main GTest::gmock)

Conan 包管理器

安装 conan:

pip install conan
# 或
brew install conan  # macOS

创建 conanfile.txt:

[requires]
gtest/1.14.0

[generators]
CMakeDeps
CMakeToolchain

[options]
gtest:build_gmock=True
gtest:shared=False

安装依赖:

# 创建构建目录
mkdir build && cd build

# 安装依赖
conan install .. --build=missing

# CMake 构建
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake
cmake --build .

CMakeLists.txt:

cmake_minimum_required(VERSION 3.15)
project(my_project)

find_package(GTest REQUIRED)

add_executable(my_tests test/test_main.cpp)
target_link_libraries(my_tests GTest::gtest_main)

预编译二进制(Windows)

使用 NuGet

<!-- 在 Visual Studio 中 -->
<!-- packages.config -->
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="googletest" version="1.14.0" />
</packages>

Visual Studio 包管理器

# 包管理器控制台
Install-Package googletest

Docker 容器方法

创建 Dockerfile:

FROM gcc:latest

# 安装依赖
RUN apt-get update && apt-get install -y \
    cmake \
    git \
    && rm -rf /var/lib/apt/lists/*

# 安装 GoogleTest
RUN git clone https://github.com/google/googletest.git /googletest \
    && cd /googletest \
    && mkdir build \
    && cd build \
    && cmake .. \
    && make -j$(nproc) \
    && make install \
    && cd / \
    && rm -rf /googletest

WORKDIR /app

# 复制项目文件
COPY . .

# 构建项目
RUN mkdir build && cd build && cmake .. && make

# 运行测试
CMD ["./build/tests/run_tests"]

使用 Docker Compose:

# docker-compose.yml
version: '3'
services:
  test:
    build: .
    volumes:
      - .:/app
    command: sh -c "cd /app/build && ctest --output-on-failure"

集成到不同构建系统

Make

# Makefile
CXX = g++
CXXFLAGS = -std=c++14 -Wall -g
GTEST_FLAGS = -lgtest -lgtest_main -pthread

TESTS = test_runner
TEST_SRCS = test/test_main.cpp src/calculator.cpp

$(TESTS): $(TEST_SRCS)
	$(CXX) $(CXXFLAGS) -o $@ $^ $(GTEST_FLAGS)

test: $(TESTS)
	./$(TESTS)

clean:
	rm -f $(TESTS)

Bazel

# WORKSPACE
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_google_googletest",
    urls = ["https://github.com/google/googletest/archive/v1.14.0.tar.gz"],
    strip_prefix = "googletest-1.14.0",
)

# BUILD
cc_test(
    name = "my_test",
    size = "small",
    srcs = ["test_main.cpp"],
    deps = [
        "@com_google_googletest//:gtest_main",
    ],
)

Meson

# meson.build
project('my_project', 'cpp',
  version : '0.1.0',
  default_options : ['cpp_std=c++14'])

gtest_dep = dependency('gtest', required : true)
gmock_dep = dependency('gmock', required : true)

test_exe = executable('my_tests',
  'test/test_main.cpp',
  dependencies : [gtest_dep, gmock_dep])

test('basic tests', test_exe)

验证安装

创建测试文件

// test_install.cpp
#include <gtest/gtest.h>

TEST(InstallTest, BasicAssertion) {
    EXPECT_EQ(1 + 1, 2);
}

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

编译测试

# 直接编译
g++ -std=c++14 test_install.cpp -lgtest -lgtest_main -pthread -o test_install
./test_install

# 使用 CMake
cmake -B build -S .
cmake --build build
ctest --test-dir build --output-on-failure

故障排除

问题解决方案
找不到 gtest/gtest.h检查包含路径,添加 -I/path/to/gtest/include
链接错误确保链接正确的库 -lgtest -lgtest_main -pthread
版本冲突使用 FetchContent 或指定确切版本
下载超时使用国内镜像或代理
Windows 运行时错误设置 gtest_force_shared_crt=ON

总结

方法难度推荐场景优缺点
FetchContent (CMake)⭐新项目、CMake项目✅自动下载 ✅版本控制 ❌需要网络
包管理器⭐系统级安装✅简单快速 ❌版本可能较旧
Git Submodule⭐⭐版本控制项目✅版本锁定 ✅离线使用 ❌仓库变大
源码编译⭐⭐⭐自定义需求✅完全控制 ❌较复杂
预编译二进制⭐⭐Windows项目✅无需编译 ❌平台限制
Conan/vcpkg⭐⭐大型项目✅依赖管理 ❌学习成本
GoogleTest安装和搭建自动测试环境 介绍GoogleTest安装和测试环境搭建 阅读详情

相关推荐

Ubuntu安装GoogleTest

判断是否安装cmake 打开终端,输入cmake -v,如果没有安装,输入sudo apt-get install cmake。 下载googletest 打开终端输入:git clone https://github.com/google/googletest.git 编译安装 (1) # 进入下载的googletest目录 cd ~/Downloads/googletest-m...

ClaireQi的博客 4552

Linux系统安装google test(避雷)

安装google test工具(gtest)

RockyZhangY的博客 1642

记录 | Google gtest安装

记录 | Google gtest安装

极智视界 927

【亲测免费】 GoogleTest 安装和配置指南

GoogleTest 安装和配置指南 【免费下载链接】googletest 由 Google 开发的一款用于 C++ 的单元测试和模拟(mocking)框架 项目地址: https://gitcode.com/GitHub_Tre...

gitblog_09657的博客 1095

GoogleTest:安装

1.首先克隆GoogleTest。

风静如云的博客 315

googletest-1.8.x.zip

googletest-1.8.x.zip

GoogleTest安装

GoogleTest是Google提供的C++测试框架。安装方法:git clone --depth=1 https://github.com/google/googletest.git cd googletest mkdir build cd build cmake .. make make install

Hustlion 的技术博客 2546

【校招】SHL 的 General Ability (GA, 通用能力测试)

SHL 的 General Ability (GA, 通用能力测试) 文章目录SHL 的 General Ability (GA, 通用能力测试)1、归纳推理题1.1 圈圈线条推理1.2 图形颜色位置推理1.3 箭头指向推理2. 数字推理题攻略3. 语言推理题 1、归纳推理题   归纳推理题我把它总结为三种类型:圈圈线条推理;图形颜色位置推理;箭头指向推理。 1.1 圈圈线条推理   你别看这个题目看起来很复杂,其实很简单,而且这个题型的题目背后原理都一样!我把我的 tips 偷偷分享给你们嘿嘿~先从 A

Sunnyside_ 2万+

Linux下Googletest安装以及使用详解

Linux下Googletest安装以及使用详解1 Googletest的安装1.1创建shell自动下载编译1.2利用Googletest编写测试案例1.3移动库文件1.4编译1.5链接2 Googletest的使用大佬博客 1 Googletest的安装 1.1创建shell自动下载编译 (网速好的话,也可以从github直接下载) #!/bin/sh git clone https://gitee.com/mlb810/googletest.git cd googletest g++ -isystem

一年之内毫无半点成绩,想起来做人真是没趣。 2730

【IC】Redhawk-SC输入件配置

Redhawk sc

u011808788的博客 1776

恭喜,恭喜,iMouse爱鼠XP版全面发布测试,苹果手机自动化测试必须

电脑控制苹果手机,免越狱,免签名,自动化测试

qq_41057894的博客 1063

linux下安装googletest

1、到https://github.com/google/googletest下载最新的googletest,点击download zip; 2、unzip master.zip 3、cd进入解压的目录; 4、./travis.sh,再cmake ./CMakeLists.txt ; 5、生成了Makefile,make,make install;

youngstonep的专栏 1578

GD32测量pwm波频率以及占空比

1、需求 最近做的一个项目,其中有一个传感器输出是pwm波形,频率代表速度,频率越高速度越快。不同的占空比代表不同的故障类型。占空比10%~90%,频率范围20hz ~1khz。 基于以上的需求,单片机要实现两个功能: 1、测量频率 2、测量占空比 这怎么玩呢?从没搞过啊。 2、需求分析 经过查找资料以及参考正点原子的教程,发现单片机的定时器的输入捕获功能能够实现该功能。 2.1分析 如上图所示,测量占空比和测量频率实际上就是测量波形的长度。 对于占空比,就是测量T2与T1时刻的差值 对于频率,就是测量T

Jack Yi的博客 9069

googletest Linux 环境安装、使用

说明:centos8 最小安装 安装cmake: # yum -y install cmake 下载googletest: # git clone https://github.com/google/googletest.git 安装: 新建编译目录 # mkdir googletestbuild # cd googletestbuild # ...

weixin_39704301的博客 1100

PCL读取点云数据报错:Failed to find match for field ‘x‘/ ‘y‘/ ‘z‘.

原因:使用matlab生成的pcd文件,点云数据是双精度类型,pcl处理的点云数据是单精度类型。解决方案:使用matlab生成的点云坐标单精度化,然后在生成点云加以存储。

little_white138的博客 868

别再调PID了!用MATLAB/Simulink给四旋翼无人机搭个ADRC控制器(附完整仿真模型)

本文详细介绍了在MATLAB/Simulink环境中为四旋翼无人机搭建ADRC控制器的完整流程,包括核心原理、Simulink建模、参数调试技巧及与PID控制的性能对比。ADRC通过扩张状态观测器(ESO)有效提升无人机在复杂扰动下的控制性能,特别适合四旋翼无人机这类强耦合系统。文章还提供了完整的仿真模型和工程实践问题解决方案。

weixin_26808439的博客 382

GoogleTest安装以及使用

Google Test(也称为gtest)是Google开发的一个用于C++的单元测试库。它允许开发者方便地编写和运行测试用例,以确保代码的正确性和健壮性。GoogleTest 提供了一系列的断言宏,如 ASSERT_, EXPECT_等,用于验证代码的行为。Google Test 的特点易用性:Google Test 提供了一个简单易用的API,让开发者能够快速编写测试用例。强大的断言:提供了丰富的断言宏来检查各种条件是否满足。

zhangdonghuirjdd的博客 1314

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

执行手眼校准有助于操作配备末端执行器(简称 “手”)的机械臂,该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准,机械臂就能准确地移动到摄像头识别的特定像素位置。这种能力是执行精确拾放任务(如分类、堆垛和分拣)的基础,即使在摄像机的确切位置和方向未知的情况下也是如此。机器人-摄像机系统有两种构型:眼在手内和眼在手外。在眼在手内构型中,摄像头直接安装在机器人手臂的末端执行器上。相反,在眼在手的构型中,摄像头固定在一个静止的物体上,机器人手臂在其视野内。

机器人控制与仿真应用 3348

Centos7 C++ 安装使用googletest单元测试

环境说明 系统环境:centos7.0 g++版本: g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) 查看方法: g++ -version,升级方法 yum -y install g++ 由于最新的google test有使用的是C++11+的函数,故而g++版本不能太低 cmake安装: yum -y install cmake 下载 go...

大隐隐于野 1304

【UML】第12篇 序列图(1/2)——基本概念和构成

序列图(Sequence Diagram)是一种用于显示对象之间交互的图形化表示。它描述了在特定场景下,对象之间按照时间顺序进行的消息传递和协作过程。在序列图中,对象被表示为带有垂直虚线的矩形,虚线表示对象的生命周期。对象之间的交互通过箭头表示的消息来表示,箭头从一个对象的生命线指向另一个对象的生命线,表示消息的发送和接收。

AI人人懂 3046

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ubuntu下googletest安装教程及报错解决办法

Googletest安装流程 1、从官网下载ubuntu下安装的source文件,下载链接为: https://github.com/google/googletest.git 2、解压之后,cd到对应目录中,然后使用cmake进行编译,再进行make生成两个静态库libgtest.a libgtest_main.a,操作流程为: cd ~/software/googletest-master m...

weixin_44401286的博客 7214

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ubuntu16下googletest安装及常见错误解决办法

ubuntu16下googletest安装及常见错误解决办法安装googletest在make时报错 安装googletest 第一步:获取googletest源代码(这个链接下载速度还是很快的)权限不够自己加sudo git clone https://github.com.cnpmjs.org/google/googletest.git 第二步:进入googetest文件 cd googletest 第三步:gtest编译(如果没有cmake,先安装cmake,sudo apt-get instal

weixin_43317450的博客 2133

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

linux系统安装Googletest单元测试框架

v1.10.x之后的版本有个坑需要看一下,cmake的时候会有问题,会在CMakelist.txt的127行附近报一个错,原因是下面语句中的GOOGLETEST_VERSION变量没有定义,需要手动加一下。编译完成会在googletest/build/lib目录下生成4个静态库文件,libgmock.a、libgmock_main.a、libgtest.a、libgtest_main.a。这样,如果你之前的gcc和google版本是匹配的,那么make应该就没有语法问题了,否则就是版本不匹配问题。

weixin_45312249的博客 1215

Ubuntu安装GoogleTest框架并测试C++代码

GoogleTest框架测试C++代码 开发环境:Ubuntu16.04 判断是否安装cmake 输入cmake -v,如果没有安装,输入sudo apt-get install cmake 打开终端输入:git clone https://github.com/google/googletest.git 创建文件夹mydir,用于作为cmake的目录。 在mydir下,输入命令:cmak...

Erick Lv的笔记 5429
上一篇: GoogleTest 使用指南 | 断言
下一篇: GoogleTest 使用指南 | TEST 语法
UestcXiye
博客等级 码龄8年 9029粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值