3.测试实现与执行

3.测试实现与执行
赵海波基础框架
一、gtest(Google Test)
定位:Google 开源的 C++ 单元测试框架
核心功能:
- 结构化测试
1 | TEST(TestSuiteName, TestName) { // 定义测试用例 |
- 测试夹具(Fixtures):复用初始化逻辑
1 | class DatabaseTest : public ::testing::Test { |
- 参数化测试:同一逻辑多组数据验证
1 | INSTANTIATE_TEST_SUITE_P(IntValues, CalculatorTest, |
关键特性:
- 死亡测试(检查程序崩溃)
- 测试过滤(
--gtest_filter=SuiteName.TestName
) - 生成 XML 报告(集成 CI 工具)
gtest测试
gtest断言
二、gmock(Google Mock)
定位:gtest 的扩展库,用于 创建模拟对象(Mock Objects)
核心场景:隔离被测代码的依赖(如数据库、网络等)
工作流程:
- 定义模拟接口
1 | class PaymentGateway { // 抽象接口 |
- 生成 Mock 类
1 |
|
- 设定模拟行为
1 | TEST(PaymentTest, ChargeFails) { |
高级功能:
- 参数匹配器(
Ge(100)
,NotNull()
) - 调用次数验证(
Times(2)
) - 顺序验证(
InSequence
)
三、GDB(GNU Debugger)
定位:Linux/Unix 下的 命令行调试工具
核心用途:动态分析程序运行时状态(非测试框架,但为测试提供保障)
常用命令速查:
命令 | 作用 | 示例 |
---|---|---|
gdb ./a.out |
启动调试程序 | |
break main |
在 main 函数设断点 | break MyClass::method |
run |
运行程序到断点 | run arg1 arg2 |
next (n ) |
单步执行(跳过函数) | |
step (s ) |
单步进入函数 | |
print var |
打印变量值 | print *ptr@10 (数组) |
backtrace (bt ) |
查看调用栈 | bt full (显示局部变量) |
watch var |
监控变量修改 | |
core-file core |
分析崩溃后的 core 转储文件 | gdb ./a.out core |
调试核心崩溃示例:
1 | $ gdb ./myapp core.1234 # 加载崩溃的程序和 core 文件 |
三者关系:
典型工作流:
- gtest 覆盖核心逻辑 → 发现边界条件错误
- gmock 隔离网络请求 → 验证超时处理逻辑
- 测试崩溃时用 GDB → 定位空指针访问位置
💡 总结:
- gtest = 单元测试的基础框架
- gmock = 增强测试隔离性的模拟工具
- GDB = 保障代码健壮性的调试利器
三者共同构成 C++ 开发的质量保障闭环。
评论
匿名评论隐私政策