0点51胜头像

C++ 单元测试入门:用 CMake 和 GoogleTest 搭建最小可运行工程

本文通过一个只有 add() 函数的 C++ 工程,演示如何使用 CMake 自动获取 GoogleTest、编写第一个测试用例,并通过 CTest 统一执行测试。

一、为什么需要单元测试

单元测试用于验证程序中最小的可测试单元,例如一个函数或一个类。

与手动运行程序并观察输出相比,单元测试具有几个直接优势:

  • 测试结果由断言自动判断,不需要人工检查输出。
    • 修改代码后可以快速执行回归测试。
    • 测试用例可以作为函数行为的可执行说明。
    • 测试能够接入 CTest 和 CI 流水线。
      本文选择 GoogleTest,是因为它是 C++ 领域使用广泛的测试框架,支持断言、测试夹具、参数化测试等能力。

二、环境要求

本文使用以下工具:

  • CMake 3.15 或更高版本
    • 支持 C++17 的编译器
    • Git
    • Windows 下可使用安装了“使用 C++ 的桌面开发”组件的 Visual Studio
      GoogleTest 不需要提前手动安装。CMake 会在首次配置工程时自动拉取指定版本。

三、工程目录

工程结构如下:

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

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--