c++怎么使用Google Test框架进行测试_c++单元测试框架gtest基础用法

首先安装配置gtest,然后编写测试用例并使用TEST宏定义测试,通过EXPECT_EQ等断言验证结果,最后编译链接运行测试程序,输出显示1个测试通过。

c++怎么使用google test框架进行测试_c++单元测试框架gtest基础用法

使用Google Test(简称gtest)进行C++单元测试是提升代码质量的有效方式。它由Google开发,支持丰富的断言、测试用例组织和参数化测试功能。下面介绍如何在项目中集成并使用gtest的基础用法。

安装与配置gtest

在开始前,需要让gtest库可用。常见方法有通过包管理器安装或从源码编译:

  • Ubuntu/Debian系统:
    sudo apt-get install libgtest-dev cmake
    注意:这个命令只安装源码,还需自行编译生成库文件。
  • 手动编译:
    从GitHub仓库克隆后构建:
mkdir build && cd build
cmake ..
make -j
sudo make install

这会将gtest的头文件和库安装到系统目录,便于后续链接。

编写第一个测试用例

假设你有一个简单的加法函数,想对其进行测试:

// math.h
#ifndef MATH_H
#define MATH_H
int add(int a, int b);
#endif
// math.cpp
#include "math.h"
int add(int a, int b) {
  return a + b;
}

创建测试文件 test_math.cpp:

#include
#include "math.h"

TEST(MathTest, AddFunction) {
  EXPECT_EQ(add(2, 3), 5);
  EXPECT_EQ(add(-1, 1), 0);
  EXPECT_EQ(add(0, 0), 0);
}

说明:
TEST宏定义一个测试用例,格式为 TEST(测试套件名, 测试名称)。EXPECT_EQ用于检查两个值是否相等,若不满足不会立即终止测试。

编译并运行测试

需要将测试代码与gtest库链接。使用g++编译示例:

星绘 星绘

豆包旗下 AI 写真、P 图、换装和视频生成

星绘 404 查看详情 星绘 g++ test_math.cpp math.cpp -lgtest -lgtest_main -pthread -o test_math
./test_math

输出结果类似:

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from MathTest
[ RUN ] MathTest.AddFunction
[ OK ] MathTest.AddFunction (0 ms)
[----------] 1 test from MathTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[ PASSED ] 1 test.

表明测试通过。

常用断言与测试结构

gtest提供多种断言宏,分为两类:

  • 非致命断言:EXPECT_系列,失败继续执行后续语句。
    如 EXPECT_EQ(a,b), EXPECT_TRUE(cond), EXPECT_STREQ(s1,s2)
  • 致命断言:ASSERT_系列,失败则中断当前测试函数。
    如 ASSERT_EQ(a,b), ASSERT_FALSE(cond)

还可以组织多个测试到同一个套件中:

TEST(MathTest, SubFunction) {
  // 可添加其他函数测试
}

基本上就这些。掌握基础后可进一步学习参数化测试、死亡测试和Mock(配合gmock)。环境搭好后,写测试变得简单直接。关键是坚持为关键逻辑编写测试用例,逐步形成习惯。

以上就是c++++怎么使用Google Test框架进行测试_c++单元测试框架gtest基础用法的详细内容,更多请关注其它相关文章!

本文转自网络,如有侵权请联系客服删除。