GoogleTest - 运行第一个测试

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

running test on googletest

创建基本测试

按照以下步骤在 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。