当前位置:首页 > C > 正文

CppUTest入门指南(手把手教你用CppUTest为C语言项目编写单元测试)

在软件开发中,单元测试是确保代码质量的重要手段。对于使用C语言开发的项目(尤其是嵌入式系统),CppUTest是一个轻量级、跨平台且专为C/C++设计的单元测试框架。本教程将从零开始,带领你安装、配置并使用CppUTest为C语言函数编写测试用例,即使你是测试新手也能轻松上手。

什么是CppUTest?

CppUTest 是一个开源的单元测试框架,最初由 James Grenning 创建,专为嵌入式 C 和 C++ 开发者设计。它支持 TDD开发C语言(测试驱动开发),语法简洁,依赖少,非常适合资源受限的环境。

CppUTest入门指南(手把手教你用CppUTest为C语言项目编写单元测试) CppUTest  C语言单元测试 嵌入式测试框架 TDD开发C语言 第1张

第一步:安装CppUTest

CppUTest 可以通过源码编译安装。以下是在 Linux 或 macOS 上的操作步骤(Windows 用户可使用 WSL 或 MinGW):

# 克隆官方仓库git clone https://github.com/cpputest/cpputest.git# 进入目录并编译cd cpputestmake# 安装到系统(可选)sudo make install

编译完成后,你会在 cpputest_build 目录下看到生成的库文件和头文件。

第二步:创建你的第一个C语言测试项目

假设我们要测试一个简单的加法函数。首先创建项目结构:

my_project/├── src/│   └── math.c├── include/│   └── math.h└── tests/    └── MathTest.cpp

1. 编写被测函数(math.c)

// math.c#include "math.h"int add(int a, int b) {    return a + b;}

2. 头文件(math.h)

// math.h#ifndef MATH_H#define MATH_Hint add(int a, int b);#endif

3. 编写测试用例(MathTest.cpp)

注意:虽然测试文件是 .cpp 后缀,但我们可以用它来测试纯 C 代码。

// MathTest.cpp#include "CppUTest/TestHarness.h"extern "C" {    #include "math.h"}TEST_GROUP(Math) {    // 可在此处添加 setUp() 和 tearDown()};TEST(Math, AddTwoPositiveNumbers) {    int result = add(2, 3);    CHECK_EQUAL(5, result);}TEST(Math, AddPositiveAndNegative) {    int result = add(10, -4);    CHECK_EQUAL(6, result);}

第三步:编译并运行测试

使用 g++ 编译测试程序,链接 CppUTest 库:

g++ -I./include -I/path/to/cpputest/include \     -L/path/to/cpputest/lib \     tests/MathTest.cpp src/math.c \     -lCppUTest -lCppUTestExt -pthread -o run_tests./run_tests

如果一切正常,你将看到类似以下的输出:

....................OK (2 tests, 2 ran, 2 checks, 0 ignored, 0 filtered out, 0 ms)

为什么选择CppUTest?

  • 专为 C语言单元测试 设计,支持 extern "C" 调用
  • 轻量级,无 STL 依赖,适合嵌入式系统
  • 支持测试分组、断言、内存泄漏检测
  • 完美支持 嵌入式测试框架 场景

小结

通过本教程,你已经学会了如何使用 CppUTest 为 C 语言函数编写基本的单元测试。掌握这一技能,不仅能提升代码可靠性,还能让你在 TDD开发C语言 的道路上迈出坚实一步。建议你尝试为更复杂的函数(如字符串处理、状态机等)编写测试,逐步构建完整的测试套件。

Happy Testing with CppUTest!