GoogleTest - 运行第一个测试
在本教程中,我们将借助示例学习如何使用 GoogleTest 测试 C++ 代码。我们将介绍运行基本测试时使用的所有必需步骤、命令和方法。

创建基本测试
按照以下步骤在 GoogleTest 中为 C++ 函数创建基本测试 −
步骤 1:
首先,创建一个要保存项目的文件夹或目录。在系统的命令提示符下输入以下命令来创建文件夹 −
mkdir test1
在这里,我们使用文件夹名称作为 "test1"。
步骤 2:
创建一个 "test_case.cc" 文件,该文件将包含一个 C++ 函数和该函数的单元测试。您可以随意命名。
// GoogleTest 的标头 #include <gtest/gtest.h> // 我们为其编写单元测试的函数 int add(int num1, int num2) { return num1 + num2; } // 测试正数的加法 TEST(SumTest, ForPositiveNumbers) { EXPECT_EQ(35, add(23, 12)); } // 测试负数的加法 TEST(SumTest, ForNegativeNumbers) { EXPECT_EQ(-1, add(-1, 0)); } // 测试正数和负数的加法 TEST(SumTest, ForMixedNumbers) { EXPECT_EQ(0, add(-1, 1)); } // main() 函数运行所有测试 int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
在上面的代码中,第一个单元测试检查给定的 C++ 函数是否能够正确处理两个正数。第二个测试检查 add() 函数 是否正确地将负数和零相加。最后一个单元测试检查 add() 函数是否正确地将负数和正数相加。最后,main() 函数 初始化 Google Test 并运行所有测试用例。
创建"CMakeLists.txt"文件
如上一章所述,每个 GoogleTest 项目都需要 "CMakeLists.txt" 文件。在此文件中,我们使用其 github 链接声明对 GoogleTest 的依赖,如下所示 −
cmake_minimum_required(VERSION 3.14) project(test1) # GoogleTest 至少需要 C++14 set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) include(FetchContent) FetchContent_Declare( googletest URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip ) # 对于 Windows:防止覆盖父项目的编译器/链接器设置 set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) FetchContent_MakeAvailable(googletest) # 启用测试 enable_testing() # 定义可执行文件目标及其源文件 add_executable( test_case test_case.cc ) # 将可执行文件与 GoogleTest 主库链接 target_link_libraries( test_case GTest::gtest_main ) # 包含 GoogleTest 模块 include(GoogleTest) # 发现并注册可执行文件中的所有测试 gtest_discover_tests(test_case)
构建并运行测试
要构建并运行测试,请按照以下步骤操作 −
步骤 1:
使用以下命令导航到项目文件夹 −
cd test1
步骤 2:
然后,使用以下命令生成构建文件 −
cmake -S 。 -B build
-S 指定源目录,即 "。",而 -B 指定构建目录,名为 "build"。
步骤 3:
现在,借助上一步中 CMake 生成的构建文件编译并构建项目 −
cmake --build build
步骤 4:
移至构建目录 −
cd build
步骤 5:
最后,使用给定的命令运行所有测试 −
ctest
上述命令使用 enable_testing() 命令运行 "CMakeLists.txt" 文件中定义的测试。
输出:
输出在 cosole 上显示如下 −
Test project D:/gTest/test1/build Start 1: SumTest.ForPositiveNumbers 1/3 Test #1: SumTest.ForPositiveNumbers ....... Passed 0.02 sec Start 2: SumTest.ForNegativeNumbers 2/3 Test #2: SumTest.ForNegativeNumbers ....... Passed 0.01 sec Start 3: SumTest.ForMixedNumbers 3/3 Test #3: SumTest.ForMixedNumbers .......... Passed 0.01 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 0.13 sec
您可以在 LastTest.log 文件中检查每个测试的结果。此文件位于以下位置:/build/Testing/Temporary。