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。

