gTest测试框架的安装与配置
目录
1.准备工作
2.在 Linux/macOS 上安装
3.在 Windows 上安装(使用 MSVC)
4.项目配置(以 CMake 为例)
5.常见问题与解决方案
6.总结
1.准备工作
1.依赖工具:
- 编译器:支持 C++11 及以上标准的编译器(GCC 4.8+、Clang 3.5+、MSVC 2015+)
- 构建工具:CMake 3.5+(推荐)或 Make(Linux/macOS)
- 版本控制工具:Git(用于获取源码)
2.获取源码:
gMock 已整合到 Google Test 仓库中,无需单独下载,克隆仓库即可:
git clone https://github.com/google/googletest.git
cd googletest
下载的目录如下:
2.在 Linux/macOS 上安装
1.编译源码
# 创建构建目录
mkdir build && cd build# 生成 Makefile(默认安装到 /usr/local)
cmake .. \-DCMAKE_BUILD_TYPE=Release \ # Release 模式(优化编译)-DBUILD_GMOCK=ON \ # 启用 gMock(默认已启用)-DINSTALL_GTEST=ON # 允许安装 GTest/gMock# 编译(-j 选项指定并行编译线程数,加速编译)
make -j$(nproc)
2.安装到系统目录
# 安装(需要管理员权限)
sudo make install# 安装后文件位置:
# - 头文件:/usr/local/include/gtest/、/usr/local/include/gmock/
# - 库文件:/usr/local/lib/libgtest.a、/usr/local/lib/libgmock.a 等
3.在 Windows 上安装(使用 MSVC)
1.编译源码
# 创建构建目录
mkdir build && cd build# 生成 Visual Studio 解决方案(以 VS2022 为例)
cmake .. \-G "Visual Studio 17 2022" \ # 指定 VS 版本-A x64 \ # 目标架构(x64 或 Win32)-DBUILD_GMOCK=ON \-DINSTALL_GTEST=ON//方法1
cmake --build . --config Release//或//方法2
# 用 MSBuild 编译(或打开生成的 .sln 文件在 VS 中编译)
msbuild googletest-distribution.sln /p:Configuration=Release /m
如果是用msbuild编译,以我的电脑为例,我自己的电脑安装的是VS2022,msbuild.exe的路径是(用Everything搜索):
2.安装到系统目录
# 安装(以管理员身份运行)
msbuild INSTALL.vcxproj /p:Configuration=Release# 安装后文件位置:
# - 头文件:C:\Program Files (x86)\googletest-distribution\include\
# - 库文件:C:\Program Files (x86)\googletest-distribution\lib\
这个地方用msbuild命令一定以管理员身份运行,我亲自试过,如果不是以管理员身份运行就会报错。以下是以管理员运行msbuild安装gTest的步骤:
1)以管理员运行cmd,并切换到msbuild的目录
2)执行安装指令
3)安装完成,在下列目录就有这些文件
4.项目配置(以 CMake 为例)
在自己的 C++ 项目中使用 gMock,需通过 CMake 配置链接。
1.创建示例项目结构
my_project/
├── CMakeLists.txt # 项目配置文件
└── test.cpp # 测试代码
2.编写 CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(my_gmock_test)# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 查找 GTest 和 gMock
find_package(GTest REQUIRED)
find_package(GMock REQUIRED)# 添加测试可执行文件
add_executable(my_test test.cpp)# 链接 gMock、GTest 和线程库(Linux 需链接 pthread)
target_link_libraries(my_testGTest::gtestGTest::gmockGTest::gmock_main # 提供默认 main 函数,可省略自行实现
)# 如果是 Linux/macOS,需额外链接 pthread
if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")target_link_libraries(my_test pthread)
endif()
3.编写测试代码(test.cpp)
#include <gmock/gmock.h>
#include <gtest/gtest.h>// 示例接口
class MyInterface {
public:virtual int add(int a, int b) = 0;virtual ~MyInterface() = default;
};// 模拟类
class MockMyInterface : public MyInterface {
public:MOCK_METHOD(int, add, (int a, int b), (override));
};// 测试用例
TEST(MyInterfaceTest, AddTest) {MockMyInterface mock;EXPECT_CALL(mock, add(2, 3)).WillOnce(testing::Return(5));EXPECT_EQ(mock.add(2, 3), 5);
}// 若未链接 gmock_main,需手动实现 main 函数
// int main(int argc, char **argv) {
// testing::InitGoogleTest(&argc, argv);
// return RUN_ALL_TESTS();
// }
4.编译并运行测试
# 构建项目
mkdir build && cd build
cmake ..
make # 或在 Windows 上用 msbuild# 运行测试
./my_test # Linux/macOS
# 或 my_test.exe # Windows
5.常见问题与解决方案
1.找不到 GTest/gMock 库:
- 确保安装路径已添加到系统环境变量(如
LD_LIBRARY_PATH
或PATH
)。 - 若未全局安装,可在 CMake 中指定路径:
set(GTEST_ROOT "/path/to/googletest/install")
set(GMOCK_ROOT "/path/to/googlemock/install")
2.链接错误(如 undefined reference to testing::Mock...
):
- 检查是否遗漏链接
gmock
库(target_link_libraries
需包含GTest::gmock
)。 - Linux 系统需确保链接
pthread
库。
3.编译器版本不兼容:
- 升级编译器至支持 C++11 及以上的版本(如 GCC 4.8+)。
6.总结
gTest 的安装和配置主要分为两步:
- 编译并安装 GTest/gMock 源码到系统或指定目录;
- 在项目中通过 CMake 链接 gTest/gMock 库,并编写测试代码。
通过这种方式,即可在 C++ 项目中使用 gMock 创建模拟对象,隔离外部依赖,高效编写单元测试。