c++如何使用Google Test进行单元测试_c++单元测试框架Google Test入门与示例

Google Test是C++常用单元测试框架,支持丰富断言和CMake集成。1. 可通过包管理器、源码构建或子项目方式安装;2. 使用TEST()定义测试用例,EXPECT_/ASSERT_进行断言;3. 配合CMake构建时需链接GTest库并启用测试;4. 常用断言包括数值比较、布尔判断、浮点近似和异常检测,有助于提升代码质量。

c++如何使用google test进行单元测试_c++单元测试框架google test入门与示例

在C++开发中,保证代码质量的重要手段之一是编写单元测试。Google Test(也称gtest)是目前最流行的C++单元测试框架之一,它提供了丰富的断言、测试用例组织方式以及测试运行机制,非常适合用于中小型项目的测试工作。

安装与配置 Google Test

Google Test 不是系统库,需要手动集成到项目中。有几种常见方式:

使用包管理器(推荐):在 Ubuntu 上可以通过 apt 安装:
sudo apt-get install libgtest-dev cmake
注意:这个命令只安装源码,还需要编译生成库文件。 从源码构建:克隆官方仓库并用 CMake 编译:
git clone https://github.com/google/googletest.git
cd googletest && mkdir build && cd build
cmake .. && make && sudo make install作为子项目嵌入(适合现代CMake项目):使用 add_subdirectory() 将 gtest 源码包含进你的 CMakeLists.txt。

编写第一个测试用例

假设我们有一个简单的加法函数,想对它进行测试。

先写被测函数(math.h):

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

bool isPositive(int x);
int add(int a, int b);

实现(math.cpp):

#include “math.h”
int add(int a, int b) { return a + b; }
bool isPositive(int x) { return x > 0; }

测试文件(test_math.cpp):

#include
#include “math.h”

// 测试 add 函数
TEST(MathTest, AddFunction) {
  EXPECT_EQ(add(2, 3), 5);
  EXPECT_EQ(add(-1, 1), 0);
}

// 测试 isPositive 函数
TEST(MathTest, IsPositive) {
  EXPECT_TRUE(isPositive(5));
  EXPECT_FALSE(isPositive(-3));
  EXPECT_FALSE(isPositive(0));
}

说明
– TEST(TestCaseName, TestName) 定义一个测试用例,前缀名用于分组。
– 使用 EXPECT_* 或 ASSERT_* 进行断言。
– EXPECT_* 失败不会中断当前测试函数。
– ASSERT_* 失败会立即终止测试函数。

使用 CMake 构建测试工程

创建 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.14)
project(MyTestProject)

设置 C++ 标准

set(CMAKE_CXX_STANDARD 17)

查找 Google Test

find_package(GTest REQUIRED)

添加被测源文件

add_library(math_lib math.cpp)

添加测试可执行文件

add_executable(test_math test_math.cpp)
target_link_libraries(test_math GTest::gtest GTest::gtest_main math_lib)

启用测试

enable_testing()
add_test(NAME RunTests COMMAND test_math)

构建步骤:

mkdir build
cd build
cmake ..
make
./test_math

运行结果会显示哪些测试通过或失败,并统计总数。

常用断言介绍

Google Test 提供了丰富的断言宏,以下是一些常用示例:

数值比较
EXPECT_EQ(a, b);   // 相等
EXPECT_NE(a, b);   // 不相等
EXPECT_LT(a, b);   // 小于
EXPECT_LE(a, b);   // 小于等于 布尔判断
EXPECT_TRUE(condition);
EXPECT_FALSE(condition);浮点数比较
EXPECT_FLOAT_EQ(a, b);   // 单精度近似相等
EXPECT_NEAR(a, b, abs_error);   // 在误差范围内 异常测试(需启用 RTTI 和异常)
EXPECT_THROW(stmt, ExceptionType);
EXPECT_NO_THROW(stmt);

基本上就这些。Google Test 上手快,集成方便,配合 CMake 能很好地融入现代C++项目流程。只要坚持写测试,长期来看能显著提升代码健壮性。

以上就是c++++如何使用Google Test进行单元测试_c++单元测试框架Google Test入门与示例的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 08:47:01
下一篇 2025年12月18日 21:48:39

相关推荐

发表回复

登录后才能评论
关注微信