设置 GTest
添加并运行测试框架
设置 GTest 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。
为什么需要测试框架
Google Test(GTest)是广泛使用的 C++ 单元测试框架。它提供测试注册、丰富的断言、测试夹具和清晰的报告,让您能够自动验证代码。
获取 GTest
获取 GTest 的常见方式:
- 系统软件包(例如
libgtest-dev) - 在 CMake 中使用 FetchContent 从 GitHub 获取
- 作为项目自带的子模块
对于新项目,FetchContent 的可移植性最高。
使用 FetchContent 配置 CMake
最小的 CMake 配置会下载 GoogleTest 并将其链接起来。
# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)
add_executable(my_tests test_main.cpp)
target_link_libraries(my_tests GTest::gtest_main)您的第一个测试
使用 TEST 宏声明测试,并传入测试套件名称和测试名称。在其中使用断言。
#include <gtest/gtest.h>
int add(int a, int b) { return a + b; }
TEST(MathTest, AddsPositive) {
EXPECT_EQ(add(2, 3), 5);
}无需 main()
链接 GTest::gtest_main 会提供运行所有已注册测试的 main()。您只需编写测试用例。
编写自己的 main
如果您需要自定义入口点,可以自行初始化 GTest。
#include <gtest/gtest.h>
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}构建并运行
配置 CMake 后,进行构建并运行。
cmake -S . -B buildcmake --build build./build/my_tests
GTest 会输出带颜色的通过/失败摘要。
阅读输出
每个测试先报告 [ RUN ],然后报告 [ OK ] 或 [ FAILED ]。最后一行会显示通过的测试数量。失败信息包含文件、行号,以及预期值与实际值。
运行部分测试
使用 --gtest_filter 标志只运行匹配的测试,例如 ./my_tests --gtest_filter=MathTest.*。这样可以加快针对性调试。
与 CTest 集成
调用 enable_testing(),并使用 gtest_discover_tests 注册二进制文件,这样 ctest 就能在 CI 中运行您的测试套件。
# CMakeLists.txt
enable_testing()
include(GoogleTest)
gtest_discover_tests(my_tests)良好的工作流程
先编写一个失败的测试,再实现代码,观察测试通过。保持测试快速且相互独立,这样每次更改后都可以运行它们。
快速检查
回顾 main() 是如何提供的。
总结
您完成了 Google Test 的设置。
- 通过 FetchContent、软件包或子模块获取
TEST(Suite, Name)声明一个测试- 链接
gtest_main以自动提供main() - 构建、运行、筛选,并与 CTest 集成
常见问题解答
「设置 GTest」课时是免费的吗?
是的 — 「设置 GTest」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。
「设置 GTest」这节课中我会学到什么?
添加并运行测试框架 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C++ Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「设置 GTest」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C++ Academy 课中编写并运行代码吗?
能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 设置 GTest
- 断言与匹配器
- 测试夹具与设置
- 使用 GMock 模拟