首先安装配置Google Test,接着编写被测函数和测试用例,然后通过CMake构建项目并运行测试。具体步骤包括:使用包管理器或源码安装gtest,定义待测函数如add,利用TEST宏创建测试套件与用例,使用EXPECT_EQ进行断言,在CMakeLists.txt中配置gmock_main或GTest::Main链接,最后编译执行测试输出结果。正确配置后可顺利运行单元测试并验证代码逻辑。

在C++中使用Google Test(通常称为gtest)编写单元测试,是一种非常有效的验证代码正确性的方法。Google Test是Google开发的一个开源C++测试框架,支持丰富的断言、参数化测试、死亡测试等功能。下面介绍如何配置并编写一个基本的Google Test单元测试。
1. 安装与配置Google Test
在开始前,需要先获取并安装Google Test库:
使用包管理器(如vcpkg、conan)或从GitHub克隆源码进行编译安装。在Ubuntu上可通过命令:sudo apt-get install libgtest-dev cmake 安装源码,然后用cmake构建。现代项目推荐使用CMake的FetchContent自动下载gtest,避免手动配置。
2. 编写被测试函数
假设有一个简单的加法函数需要测试:
// math.h#ifndef MATH_H#define MATH_Hint add(int a, int b);#endif// math.cpp
立即学习“C++免费学习笔记(深入)”;
include "math.h"
int add(int a, int b) {return a + b;}
3. 编写Google Test测试用例
创建一个测试文件,例如test_math.cpp:
#include #include "math.h"// 测试用例:测试add函数TEST(MathTest, AddPositiveNumbers) {EXPECT_EQ(add(2, 3), 5);EXPECT_EQ(add(0, 0), 0);}
TEST(MathTest, AddNegativeNumbers) {EXPECT_EQ(add(-1, -1), -2);EXPECT_EQ(add(-5, 3), -2);}
说明:
TEST(测试套件名, 测试用例名) 是定义测试的基本宏。EXPECT_EQ 断言两个值相等,失败不会中断测试执行。也可使用 ASSERT_EQ,失败会立即终止当前测试。
4. 使用CMake构建项目
创建CMakeLists.txt:
cmake_minimum_required(VERSION 3.14)project(MyTestProject)启用C++17
set(CMAKE_CXX_STANDARD 17)
添加源文件
add_library(math_lib math.cpp)
查找Google Test包
find_package(GTest REQUIRED)
添加测试可执行文件
add_executable(test_math test_math.cpp)target_link_libraries(test_math math_lib GTest::GTest GTest::Main)
启用测试
enable_testing()add_test(NAME run_tests COMMAND test_math)
或者使用FetchContent自动引入gtest:
include(FetchContent)FetchContent_Declare( googletest URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip)FetchContent_MakeAvailable(googletest)set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
然后将链接目标改为gmock_main或GTest::Main。
5. 编译与运行测试
在项目目录下执行:
mkdir buildcd buildcmake ..make./test_math
输出会显示哪些测试通过或失败,例如:
[==========] Running 2 tests from 1 test suite.[----------] Global test environment set-up.[----------] 2 tests from MathTest[ RUN ] MathTest.AddPositiveNumbers[ OK ] MathTest.AddPositiveNumbers (0 ms)[ RUN ] MathTest.AddNegativeNumbers[ OK ] MathTest.AddNegativeNumbers (0 ms)[----------] 2 tests from MathTest (1 ms total)[==========] 2 passed, 0 failed, 0 skipped.
基本上就这些。只要配置好环境,写测试就像写普通C++函数一样简单。关键是把逻辑拆解成小函数,并为每种情况写对应的测试用例。Google Test提供了足够灵活的工具来覆盖大多数测试场景。不复杂但容易忽略的是断言选择和测试命名的清晰性。
以上就是c++++怎么编写Google Test单元测试_c++ Google Test单元测试方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1477605.html
微信扫一扫
支付宝扫一扫