gtest::gmock
时间: 2025-01-06 11:27:41 浏览: 4
### 关于 GTest 和 GMock 的使用指南
#### 安装与配置
为了使用 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]。
阅读全文