C++如何进行单元测试?GoogleTest框架在C++项目中的应用【测试教程】

admin 百科 13
GoogleTest写C++单元测试核心是三步:写TEST宏定义的测试用例、用EXPECT_EQ/ASSERT_EQ等断言验证、运行二进制并用命令行参数过滤或调试;推荐vcpkg或submodule集成,优先链接GTest::gtest_main而非手写main。

C++如何进行单元测试?GoogleTest框架在C++项目中的应用【测试教程】-第1张图片-佛山资讯网

用 GoogleTest 写 C++ 单元测试,核心是三步:写测试用例、断言验证行为、运行并看结果。它不强制依赖构建系统,但和 CMake 配合最顺手。

安装与集成 GoogleTest

推荐用 git submodulevcpkg 管理依赖,避免手动编译带来的路径和 ABI 问题。

  • 用 vcpkg:执行 vcpkg install googletest:x64-windows(Windows)或 googletest:x64-linux(Linux),再在 CMake 中 find_package(GTest REQUIRED)
  • 用 submodule:把 GoogleTest 克隆进 third_party/googletest,CMake 中用 add_subdirectory(third_party/googletest),然后链接 GTest::gtest_main
  • 注意:不要直接 #include "gtest/gtest.h" 后自己实现 main(),除非你明确需要自定义初始化逻辑;多数情况直接链接 gtest_main 就自动有了入口函数

编写第一个测试用例

每个测试用例对应一个“测试套件 + 测试名”,用 TEST(TestSuiteName, TestName) 宏定义,里面写断言语句。

  • 基础断言用 ASSERT_EQ(失败立即返回)或 EXPECT_EQ(失败继续执行,适合检查多个条件)
  • 测试函数里不能有返回值,也不能传参数——所有输入数据应在测试体内构造
  • 示例:TEST(MathUtils, AddReturnsCorrectResult) { EXPECT_EQ(5, add(2, 3)); }

组织测试与复用逻辑

当多个测试需要共享初始化/清理逻辑,用测试套件类(TEST_F)比全局 setup/teardown 更安全可靠。

标签: linux git go windows ai c++ win google red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~