SuperAPI AI 工具集

cpp-testing

测试与质量

查看项目

更新于 10-16 07:22

技能介绍

用途:在编写、更新或修复 C++ 测试,配置 GoogleTest/CTest,诊断失败或不稳定测试,或添加覆盖率与检测器(Sanitizers)时使用;不适用于不涉及测试改动的功能实现、大规模重构、无回归验证的性能调优,以及非 C++ 项目。

主要能力:围绕 TDD 红→绿→重构循环;强调隔离性,优先依赖注入与伪造对象(Fakes)而非全局状态;测试目录约定 tests/unit、tests/integration、tests/testdata;区分 Mock(交互验证)与 Fake(有状态行为模拟);使用 gtest_discover_tests() 做稳定发现;CI 先跑子集再以 --output-on-failure 跑全量。

使用方式:以 GoogleTest 编写 TEST/TEST_F,以 GoogleMock 的 MOCK_METHOD 与 EXPECT_CALL 验证交互;CMake 用 FetchContent 引入 googletest(示例锁 v1.17.0),链接 GTest::gtest、GTest::gmock、GTest::gtest_main,并 include(GoogleTest) 启用发现。常用命令:cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug;cmake --build build -j;ctest --test-dir build --output-on-failure;可用 -R 过滤,如 ctest --test-dir build -R ClampTest 或 -R "UserStoreTest." --output-on-failure;也可直接运行 ./build/example_tests --gtest_filter=ClampTest.。覆盖率支持 GCC+gcov+lcov 与 Clang+llvm-cov 流程,建议目标级设置标志;Sanitizers 提供 ENABLE_ASAN、ENABLE_UBSAN、ENABLE_TSAN 开关及对应 -fsanitize 选项。

限制与注意:避免在单元测试中依赖真实时间、网络或文件系统;不得用 sleep 同步,改用条件变量或门闩;临时目录需唯一并清理;为随机输入使用确定性种子;不要过度 Mock 简单值对象;缺失检测器运行、仅在 Debug 统计覆盖率、固定临时路径等均为常见陷阱。模糊测试/属性测试(libFuzzer、RapidCheck)仅在项目已支持时可选;替代框架包括 Catch2 与 doctest。频率、价格、平台及其他未提及信息暂未提供。