首页 > 后端开发 > C++ > 正文

c++怎么编写Google Test单元测试_c++ Google Test单元测试方法

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

c++怎么编写google test单元测试_c++ google test单元测试方法

在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_H
int add(int a, int b);
#endif
<p>// math.cpp</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/6e7abc4abb9f" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">C++免费学习笔记(深入)</a>”;</p><h1>include "math.h"</h1><p>int add(int a, int b) {
return a + b;
}
登录后复制

3. 编写Google Test测试用例

创建一个测试文件,例如test_math.cpp

#include <gtest/gtest.h>
#include "math.h"
<p>// 测试用例:测试add函数
TEST(MathTest, AddPositiveNumbers) {
EXPECT_EQ(add(2, 3), 5);
EXPECT_EQ(add(0, 0), 0);
}</p><p>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)
<h1>启用C++17</h1><p>set(CMAKE_CXX_STANDARD 17)</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/2095">
                            <img src="https://img.php.cn/upload/ai_manual/001/246/273/68b6cab553c77389.png" alt="青柚面试">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/2095">青柚面试</a>
                            <p>简单好用的日语面试辅助工具</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="青柚面试">
                                <span>57</span>
                            </div>
                        </div>
                        <a href="/ai/2095" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="青柚面试">
                        </a>
                    </div>
                <h1>添加源文件</h1><p>add_library(math_lib math.cpp)</p><h1>查找Google Test包</h1><p>find_package(GTest REQUIRED)</p><h1>添加测试可执行文件</h1><p>add_executable(test_math test_math.cpp)
target_link_libraries(test_math math_lib GTest::GTest GTest::Main)</p><h1>启用测试</h1><p>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_mainGTest::Main

5. 编译与运行测试

在项目目录下执行:

mkdir build
cd build
cmake ..
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单元测试方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号