本文通过一个只有
add()函数的 C++ 工程,演示如何使用 CMake 自动获取 GoogleTest、编写第一个测试用例,并通过 CTest 统一执行测试。
一、为什么需要单元测试
单元测试用于验证程序中最小的可测试单元,例如一个函数或一个类。
与手动运行程序并观察输出相比,单元测试具有几个直接优势:
- 测试结果由断言自动判断,不需要人工检查输出。
-
- 修改代码后可以快速执行回归测试。
-
- 测试用例可以作为函数行为的可执行说明。
-
- 测试能够接入 CTest 和 CI 流水线。
本文选择 GoogleTest,是因为它是 C++ 领域使用广泛的测试框架,支持断言、测试夹具、参数化测试等能力。
- 测试能够接入 CTest 和 CI 流水线。
二、环境要求
本文使用以下工具:
- CMake 3.15 或更高版本
-
- 支持 C++17 的编译器
-
- Git
-
- Windows 下可使用安装了“使用 C++ 的桌面开发”组件的 Visual Studio
GoogleTest 不需要提前手动安装。CMake 会在首次配置工程时自动拉取指定版本。
- Windows 下可使用安装了“使用 C++ 的桌面开发”组件的 Visual Studio
三、工程目录
工程结构如下:
Minimal_GTest/
├── CMakeLists.txt
├── include/
│ └── arithmetic.h
├── src/
│ └── math.cpp
└── tests/
└── test_math.cpp
```
这里把业务代码和测试代码分开:
- `include/`:对外暴露的头文件。
- - `src/`:业务实现。
- - `tests/`:GoogleTest 测试代码。
- - `CMakeLists.txt`:依赖、编译目标和测试注册配置。
## 四、编写待测试代码
首先声明一个最简单的加法函数。
`include/arithmetic.h`:
```cpp
#pragma once
int add(int lhs, int rhs);
然后实现该函数。
src/math.cpp:
#include "arithmetic.h"
int add(int lhs, int rhs) {
return lhs + rhs;
}
```
这个函数虽然简单,但已经足够展示一个完整的单元测试闭环:
```text
准备输入 -> 调用被测函数 -> 使用断言检查输出
五、编写第一个 GoogleTest 用例
tests/test_math.cpp:
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/dss875914213/article/details/167172670



