Linux下安装gtest/gmock

本文详细介绍了如何从Google官方下载gtest/gmock源码并进行安装配置的过程,包括创建连接库、拷贝文件到系统目录及编译测试等步骤。

闲来无事,想尝试一下gtest/gmock,根据下载的源码包里有README,并根据自己安装过程补充记录如下,以便以后查询


1.获取GTest/GMock源码

从Google网站上http://code.google.com/p/googlemock/downloads/list下载GMock源码(GMock源码中包含GTest源码,无需另外下载GTest源码)

放到本地目录,我下载的GMock源码版本是gmock-1.7.0,选择放在/home/USERNAME/Download下,解压,生成gmock-1.7.0

cd gmock-1.7.0


2.创建连接库

生成gtest-all.o :         g++ -isystem gtest/include -I./gtest -isystem ./include -I. -pthread -c ./gtest/src/gtest-all.cc

生成gmock-all.o :      g++ -isystem gtest/include -I./gtest -isystem ./include -I. -pthread -c ./src/gmock-all.cc 

生成libgtest.a和libgmock.a :    ar -rv libgmock.a gtest-all.o gmock-all.o


3.拷贝文件到/use/local目录

将gmock-1.7.0/gtest/include下面的gtest目录拷贝到/usr/local/include下

cp gmock-1.7.0/gtest/include/gtest/ /usr/local/include -r

将gmock-1.7.0/include下面的gmock目录拷贝到/usr/local/include下

cp gmock-1.7.0/include/gmock/ /usr/local/include -r

cp gmock-1.7.0/libgtest.a /usr/local/lib

cp gmock-1.7.0/libgmock.a /usr/local/lib

4.编译连接,测试

g++ -o executefile  yourcode.cpp -lpthread -lgtest -lgmock

 

最后附上GTest/GMock学习文档:

GTest学习文章:

http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

GMock三篇学习文章:

1,http://code.google.com/p/googlemock/wiki/ForDummies

2,http://code.google.com/p/googlemock/wiki/CheatSheet

3,http://code.google.com/p/googlemock/wiki/CookBook

按上述顺序阅读,最后一篇文章比较长。

 


注:如果不用gmock,仅仅用到gtest,可以将上述gmock部分内容去掉。

### 关于 GTestGMock 的使用指南 #### 安装配置 为了使用 Google Test (GTest) 和 Google Mock (GMock),通常需要先安装这些库。可以通过包管理器或源码编译的方式进行安装。 对于大多数 Linux 发行版,可以使用以下命令来安装: ```bash sudo apt-get install libgtest-dev libgmock-dev ``` 如果从源码构建,则需下载官方仓库并按照说明文档中的指示操作[^1]。 #### 创建测试项目结构 创建一个新的 CMake 工程目录 `my_project` 并设置基本的文件夹布局: - my_project/ - include/ (头文件) - MyClass.hpp - src/ (源代码) - MyClass.cpp - test/ (单元测试) - MyTestClass.cpp - CMakeLists.txt 其中,在 `CMakeLists.txt` 中加入必要的指令以链接 GTest/GMock 库以及指定要运行哪些测试案例。 #### 编写简单测试用例 下面是一个基于上述提到的类定义编写的一个简单的 GTest 测试例子: ```cpp // 文件名: test/MyTestClass.cpp #include <gtest/gtest.h> #include "../include/MyClass.hpp" TEST(MyClassTestSuite, ConstructorWorks) { // Arrange & Act MyClass obj; // Assert EXPECT_EQ(obj.GetValue(), 0); } ``` 这段代码展示了如何通过宏 `EXPECT_EQ()` 来验证对象的状态是否符合预期。 #### 使用 GMock 进行模拟接口调用 当涉及到依赖外部服务或其他组件时,可以利用 GMock 提供的强大功能来进行隔离测试。这里给出一个具体的实例展示怎样创建 mock 类型及其方法重载: ```cpp // 假设有一个日志记录器接口 ILogger 接口被广泛应用于应用程序内部。 class ILogger { public: virtual ~ILogger() {} virtual void LogInfo(const std::string& message) = 0; }; // 下面是对应的 Mock 版本 class MockLogger : public ILogger { public: MOCK_METHOD(void, LogInfo, (const std::string&), (override)); }; ``` 接着可以在测试函数里像这样使用它: ```cpp TEST(LoggingTests, InfoLogsAreRecordedCorrectly) { MockLogger logger; // 设置期望行为 EXPECT_CALL(logger, LogInfo("Application started")); // 执行待测逻辑... } ``` 以上就是有关 GTest 及其扩展工具 GMock 的基础介绍和应用示范[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值