C++如何使用Google Test进行单元测试_C++ Google Test单元测试方法

Google Test是C++常用单元测试框架,支持断言、参数化测试等。通过包管理器或GitHub源码安装后,用TEST宏编写测试用例,结合CMake构建工程,使用EXPECT_EQ、ASSERT_EQ等断言验证结果,支持参数化测试以减少重复代码,便于集成CI提升代码质量。

c++如何使用google test进行单元测试_c++ google test单元测试方法

Google Test(简称gtest)是C++中广泛使用的单元测试框架,由Google开发并开源。它支持多种测试类型,包括断言、参数化测试、死亡测试等,适合用于中小型项目的质量保障。

1. 安装与配置Google Test

在使用Google Test前,需要先安装并配置好环境。以下是Linux下通过CMake构建的典型流程:

方法一:使用包管理器(Ubuntu)

可以直接用apt安装gtest开发库:

sudo apt-get install libgtest-dev cmake

然后进入目录编译静态库:

立即学习“C++免费学习笔记(深入)”;

cd /usr/src/googletestsudo cmake CMakeLists.txtsudo makesudo cp *.a /usr/lib

方法二:从GitHub源码构建(推荐)

将Google Test作为项目子模块集成,便于版本控制:

git clone https://github.com/google/googletest.gitcd googletestmkdir build && cd buildcmake ..make -j

生成的库可用于后续链接。

2. 编写第一个测试用例

假设你有一个简单函数需要测试:

// math_utils.h#pragma onceint add(int a, int b);
// math_utils.cpp#include "math_utils.h"int add(int a, int b) {    return a + b;}

编写对应的测试文件:

// test_math.cpp#include #include "math_utils.h"

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宏定义了一个测试用例,格式为TEST(测试套件名, 测试名称)

3. 使用CMake构建测试工程

创建CMakeLists.txt整合源码与测试:

cmake_minimum_required(VERSION 3.14)project(MyTestProject)

启用C++17

set(CMAKE_CXX_STANDARD 17)

添加源文件

add_library(math_utils math_utils.cpp)

查找或添加Google Test

add_subdirectory(googletest)enable_testing()

添加可执行测试程序

add_executable(test_math test_math.cpp)target_link_libraries(test_math gtest_main math_utils)

注册测试

add_test(NAME MathTestRunner COMMAND test_math)

执行构建:

mkdir build && cd buildcmake ..make./test_math

如果所有断言通过,输出会显示测试成功。

4. 常用断言与高级功能

Google Test提供丰富的断言宏:

EXPECT_EQ(a, b):期望a等于b,失败不中断ASSERT_EQ(a, b):必须相等,失败则终止当前测试EXPECT_TRUE(condition):条件应为真EXPECT_STREQ(s1, s2):比较C风格字符串相等EXPECT_NEAR(val1, val2, abs_error):浮点数近似比较

支持参数化测试,避免重复代码:

class AddTest : public ::testing::TestWithParam<std::tuple> {};

TEST_P(AddTest, HandlesVariousInputs) {auto [input_a, input_b, expected] = GetParam();EXPECT_EQ(add(input_a, input_b), expected);}

INSTANTIATE_TEST_SUITE_P(NormalCases, AddTest,::testing::Values(std::make_tuple(2, 3, 5),std::make_tuple(-1, 1, 0),std::make_tuple(0, 0, 0)));

基本上就这些。熟练掌握后,可以结合CI工具自动化运行测试,提升代码可靠性。

以上就是C++如何使用Google Test进行单元测试_C++ Google Test单元测试方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1476703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
c++中i++和++i有什么区别_C++前置与后置自增运算符性能差异分析
上一篇 2025年12月19日 01:23:58
c++中如何定义和初始化字符串_c++字符串定义与初始化方法
下一篇 2025年12月19日 01:24:11

相关推荐

发表回复

登录后才能评论
关注微信