GoogleTest 使用指南 | DISABLED_ 前缀

通达信股本变迁文件(gbbq)解密方法 近年来A股市场跌宕起伏真特么精彩,本人愚钝,被整爆仓,损失惨重 痛定思痛,认为交易这种对纪律要求极高,且必须完全排除情绪影响的勾当,还是应该交给程序来干 数据哪里来呢?当然是拿来主义。。。问券商的交易软件要呗 到处查资料,得知通达信的权息文件数据齐全,不仅含有除权除息数据,还含有限售解禁、增发、可转债上市等股本变化数据 ——这对于某些对成交量变化敏感的交易模型是非常重要的 阅读详情

GoogleTest 使用指南 | DISABLED_ 前缀

GoogleTest 使用指南 | DISABLED_ 前缀

TEST(测试套件名, 测试名)

TEST(TestSuiteName, TestName) {
    // 测试代码
}

命名规则:

  • 测试套件名:通常是被测试类或模块的名称
  • 测试名:描述具体测试的内容
  • 两者都必须是有效的 C++ 标识符(不能包含下划线)

对 TestName 使用 DISABLED_ 前缀可以暂时禁用该测试。

// 暂时禁用测试
TEST(MathTest, DISABLED_SlowCalculation) {
    // 这个测试不会运行
    EXPECT_EQ(SlowFunction(), 42);
}

TEST_F(DatabaseTest, DISABLED_RequiresConnection) {
    // 需要数据库连接的测试,暂时禁用
}

示例:

bank_vault.h:

#pragma once

#include <string>

class BankVault {
private:
    double secret_balance;
    std::string password;
    
    bool ValidatePassword(const std::string& pwd) {
        return pwd == password;
    }
    
    // 允许特定测试访问私有成员
    FRIEND_TEST(BankVaultTest, AccessPrivateMembers);
    FRIEND_TEST(BankVaultTest, TestPasswordValidation);
    
public:
    BankVault() : secret_balance(1000000), password("secret123") {}
    
    bool Withdraw(double amount, const std::string& pwd) {
        if (ValidatePassword(pwd) && amount <= secret_balance) {
            secret_balance -= amount;
            return true;
        }
        return false;
    }
};

test_bank_vault.cpp:

#include "gtest/gtest.h"
#include "bank_vault.h"

TEST(BankVaultTest, AccessPrivateMembers) {
    BankVault vault;
    // 可以直接访问私有成员
    EXPECT_EQ(vault.secret_balance, 1000000);
    EXPECT_EQ(vault.password, "secret123");
}

TEST(BankVaultTest, TestPasswordValidation) {
    BankVault vault;
    // 可以调用私有方法
    EXPECT_TRUE(vault.ValidatePassword("secret123"));
    EXPECT_FALSE(vault.ValidatePassword("wrong"));
}

TEST(BankVaultTest, DISABLED_TestWithdraw)
{
    BankVault vault;
    EXPECT_TRUE(vault.Withdraw(100, "secret123"));
    EXPECT_FALSE(vault.Withdraw(2000000, "secret123"));
    EXPECT_FALSE(vault.Withdraw(0, "wrong"));
}

终端输出:

"/Users/xiye/CppProjects/unit-test-example/out/build/Clang 17.0.0 arm64-apple-darwin24.6.0/test_bank_vault"
➜  Clang 17.0.0 arm64-apple-darwin24.6.0 "/Users/xiye/CppProjects/unit-test-example/out/build/Clang 17.0.0 arm64-apple-darwin24.6.0/test_bank_vault"
Running main() from /Users/xiye/CppProjects/unit-test-example/out/build/Clang 17.0.0 arm64-apple-darwin24.6.0/_deps/googletest-src/googletest/src/gtest_main.cc
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from BankVaultTest
[ RUN      ] BankVaultTest.AccessPrivateMembers
[       OK ] BankVaultTest.AccessPrivateMembers (0 ms)
[ RUN      ] BankVaultTest.TestPasswordValidation
[       OK ] BankVaultTest.TestPasswordValidation (0 ms)
[ DISABLED ] BankVaultTest.DISABLED_TestWithdraw
[----------] 2 tests from BankVaultTest (0 ms total)

[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (0 ms total)
[  PASSED  ] 2 tests.

  YOU HAVE 1 DISABLED TEST

若要运行禁用的测试,在执行命令后加上 --gtest_also_run_disabled_tests:

./test_executable --gtest_also_run_disabled_tests

现在,3 个测试都执行了:

➜  Clang 17.0.0 arm64-apple-darwin24.6.0 ./test_bank_vault --gtest_also_run_disabled_tests
Running main() from /Users/xiye/CppProjects/unit-test-example/out/build/Clang 17.0.0 arm64-apple-darwin24.6.0/_deps/googletest-src/googletest/src/gtest_main.cc
[==========] Running 3 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 3 tests from BankVaultTest
[ RUN      ] BankVaultTest.AccessPrivateMembers
[       OK ] BankVaultTest.AccessPrivateMembers (0 ms)
[ RUN      ] BankVaultTest.TestPasswordValidation
[       OK ] BankVaultTest.TestPasswordValidation (0 ms)
[ RUN      ] BankVaultTest.DISABLED_TestWithdraw
[       OK ] BankVaultTest.DISABLED_TestWithdraw (0 ms)
[----------] 3 tests from BankVaultTest (0 ms total)

[----------] Global test environment tear-down
[==========] 3 tests from 1 test suite ran. (0 ms total)
[  PASSED  ] 3 tests.
OpenClaw安卓手机攻略 想在安卓手机上安装 OpenClaw,目前主要有两种主流方法:一种是使用专门的,操作简单直观;另一种是在命令行环境下进行,自由度更高。你可以根据自己的偏好和动手能力来选择。 阅读详情

相关推荐

地图坐标系大全:常用地图坐标系详解与转换指南

地图坐标系是用于描述地图上位置的数学模型。它可以用来表示地球表面上的任意一个点,使得这个点的位置可以在地图上精确定位。不同的地图坐标系采用不同的基准面和投影方式,因此会有不同的坐标系参数,不同的坐标系之间也需要进行坐标转换。在地图制图、导航、GIS等领域中,地图坐标系是一个非常重要的概念。

weixin_39888010的博客 1万+

彻底掌握GoogleTest测试控制:DISABLED_前缀与--gtest_also_run_disabled_tests实战指南

你是否曾遇到过这些测试场景:临时禁用的测试用例忘记恢复导致长期失效?需要紧急验证某个失败用例却要修改代码注释?团队协作时误执行未完成的测试用例?根据GoogleTest官方文档统计,约38%的测试维护问题源于缺乏有效的用例启用/禁用机制。本文将系统讲解如何通过DISABLED_前缀与命令行参数组合,实现测试用例的精细化控制,让你在10分钟内掌握专业级测试管理技巧。 ## DISABLED_前缀基...

gitblog_00617的博客 825

在WinXP操作系统上安装Tornado2.2详细教程

使用VxWorks的人都想在自己的电脑中装VxWorks的编译器Tornado,然而Win10操作系统对于Tornado并不友好,根本装不成功。而对于Win7操作系统,之前在实验室一台Win7上装Tornado成功过,并且一直在上面进行vx开发,但是过一段时间在其他Win7上装Tornado时又不能成功,由此说明Tornado对于Win7操作系统对Tornado的兼容也不是很好,所以想要长久使用T...

weixin_43822311的博客 4481

Valhalla 单元测试实践指南:GoogleTest 编写规范、常见陷阱与仓库测试架构解析

本文以 Valhalla(基于 OpenStreetMap 的开源路由引擎)贡献者文档 [docs/docs/contributing/testing.md](https://link.gitcode.com/i/dbc36018d51090d6eecb1b914eb94fa7) 为骨架,系统讲解该项目基于 GoogleTest 的单元测试编写规范:从 `EXPECT_XXX` / `ASSERT

gitblog_00238的博客 432

杂记 | 使用keycloak实现SSO单点登录(新手向,概念、原理、逻辑、详细步骤、难点解释)

使用keycloak实现SSO单点登录(概念、原理、逻辑、详细步骤、难点解释)

野生猿林仔的博客 2万+

Centos7搭建OpenStack+创建iaas云主机

主要说明在控制节点和计算节点上,通过脚本的形式,安装OpenStack的iaas安装步骤和创建可运行的云主机。提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。

weixin_48218106的博客 1万+

最实用的GoogleTest技巧:用GTEST_SKIP优雅跳过测试

你是否遇到过这样的情况:测试环境不兼容某个功能,不得不注释掉相关测试代码?或者为了临时跳过某些用例,在测试名称前加上`DISABLED_`前缀,事后却忘记恢复?GoogleTest提供的`GTEST_SKIP()`宏正是解决这类问题的优雅方案。本文将带你掌握如何使用这一功能,让测试流程更加灵活可控。 ## 为什么需要测试跳过功能? 在软件开发过程中,测试用例可能因以下原因需要临时跳过: - 待...

gitblog_00013的博客 1273

STM32驱动MG996R舵机的PWM控制与闭环原理

舵机是一种典型的模拟闭环伺服系统,其核心是通过电位器反馈实现角度位置的自动校正。工作原理基于负反馈控制:目标PWM脉宽决定期望角度,电位器输出实时反馈实际角度,控制电路计算偏差并驱动电机消除误差。该机制赋予舵机强带载能力与抗干扰性,是机器人、云台、智能执行器等场景的关键执行单元。在嵌入式开发中,STM32通过定时器生成标准20ms周期、0.5–2.5ms脉宽的PWM信号,需严格遵循电气规范,并解决PA15引脚SWJ复用冲突、定时器重映射及CCR精度计算等关键问题。本文深入解析MG996R舵机控制全流程,涵盖

weixin_42600407的博客 560

10分钟掌握GoogleTest测试过滤:从混乱到精准的测试执行方案

你是否曾在运行测试套件时等待数分钟,只为验证一个小小的代码修改?是否在调试时被成百上千个测试用例的输出淹没?GoogleTest(简称GTest)提供的测试过滤功能能帮你解决这些痛点。本文将通过实战案例,教你如何通过简单的命令行参数和环境变量,精确控制哪些测试用例执行,将测试效率提升50%以上。 读完本文你将掌握: - 基础过滤语法:通过测试用例名和测试名精准定位 - 高级匹配技巧:通配符、组合...

gitblog_00589的博客 1166

游戏大厂如何解析引擎技术

本文系统解析了游戏大厂如何评估和定制游戏引擎。游戏引擎作为游戏开发的核心基础,大厂会从性能、跨平台支持、渲染能力、网络模块等8个维度进行技术解析,通过文档查勘、源码阅读、Demo测试等7个步骤深度评估。解析后通常有三种决策:直接使用、深度定制或自研重构。文章以腾讯、网易、米哈游等为例,展示了不同厂商的引擎定制策略,并分析了技术解析面临的挑战和未来趋势。最终指出,体系化的引擎技术解析是打造高质量游戏的关键,需要持续的技术投入和团队协作。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 535

2023华为od机试C卷【推荐多样性】Java&Go 实现

推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一元素,再从第二个列表中为每屏选择一个元素,依次类推2.每个列表的元素尽量均分为N份,如果不够N个,也要全部分配完,

MISAYAONE的博客 2180

XAutoDaily 使用教程:一个把 QQ 签到、会员打卡全托管的 Xposed 自动签到模块

XAutoDaily 是一个运行在 Xposed 框架上的 QQ 自动签到模块,开源、采用 GPL-3.0 协议。它负责会员签到、黄钻打卡、腾讯视频会员、新版群打卡这类每天都要重复的日常动作,到点自动执行,把结果推给你。适合已经搭好 LSPosed 等 Xposed 兼容环境、不想再每天手动点签到的人。 ## 它替谁解决了什么麻烦 阿泽在一家公司做运营,账号上挂着 QQ 会员,还开着腾讯视频会

gitblog_00768的博客 1139

凝聚态物理新引擎:AI 驱动材料预测与相变识别大突破

摘要:本文深入探讨 AI 在凝聚态物理中的创新应用。在材料性质预测方面,AI 借助数据收集、特征提取和模型训练,能依据材料微观信息准确预估其宏观性质,以石墨烯为例验证了高效性。对于拓扑相变识别,AI 通过分析量子力学数据,利用机器学习算法判别相变节点,助力拓扑绝缘体研究。尽管面临数据质量、模型可解释性等挑战,但未来多模态数据融合、可解释 AI 等发展方向,将推动 AI 与凝聚态物理深度融合,助力探索物质奥秘与新材料研发。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1826

深入解析 googletest FAQ:命名规则、死亡测试与断言宏陷阱实战指南

googletest(GoogleTest)是业界广泛使用的 C++ 单元测试框架,其[官方 FAQ 文档](https://link.gitcode.com/i/2414201c9788be9e8430835b4b0949bc)记录了开发者在使用过程中最容易踩中的二十余个"坑":从 `TEST`/`TEST_F` 命名下划线规则、NULL 指针断言、typed/value-parameteriz

gitblog_00612的博客 447

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

利用googletest命令行参数简化单元测试

首先看看gtest如何写: #include &lt;gtest/gtest.h&gt; int main(int argc, char **argv) { testing::InitGoogleTest(&amp;argc, argv); return RUN_ALL_TESTS(); } TEST(main, minor) { } 可以看到,main中的命令行参数传入了g...

FlushHip 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

GoogleTest 官方 FAQ 深度解析:从测试命名规则到 Death Test 陷阱的源码级答案

本文以 GoogleTest 官方 FAQ([docs/faq.md](https://link.gitcode.com/i/707143f7f5a79d9009c446a7401d4a67))为主线,完整覆盖测试命名与下划线限制、断言宏的边界条件、测试夹具继承、Death Test 的进程模型与调试技巧等核心问题,并结合仓库源码(如 [gtest-internal.h](https://link

gitblog_00283的博客 442

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

现代C++测试架构:GoogleTest与Bazel集成实践

单元测试是软件质量保障的基石,通过隔离验证代码单元的逻辑正确性,能有效预防回归缺陷。其核心原理在于构建可重复执行的自动化验证套件,通常依赖断言库、测试夹具和模拟框架等技术组件。在C++生态中,GoogleTest作为事实标准,提供了丰富的断言宏、参数化测试和夹具机制,但传统构建工具(如CMake)在依赖管理和环境一致性方面存在挑战。Bazel通过声明式依赖和沙盒化构建,实现了跨平台的可复现性,解决了测试环境碎片化问题。这种组合特别适用于中大型项目,能显著提升团队协作效率和持续集成流水线的可靠性。本文以Goo

weixin_33800463的博客 429

gperftools 项目中的 GoogleTest 高级特性实战指南

> **导读**:本指南基于 gperftools 仓库内嵌的 GoogleTest 框架文档([vendor/googletest/docs/advanced.md](https://link.gitcode.com/i/b36580e4f9a1f149f9c29d14b1004456))整理而成,全面讲解断言增强、死亡测试、参数化测试、事件监听器与高级运行控制等进阶能力。gperftools

gitblog_00358的博客 76

BusTub 仓库中的 GoogleTest Bazel 快速上手:从 WORKSPACE 配置到测试通过

本指南围绕仓库内 `third_party/googletest` 中官方提供的《Quickstart: Building with Bazel》教程展开,讲解如何使用 Bazel 构建系统搭建 GoogleTest 测试工程:从创建 WORKSPACE 工作区、通过 `http_archive` 引入 GoogleTest 依赖,到编写测试用例、声明 `cc_test` 规则并运行 `bazel

gitblog_00066的博客 29

使用 GoogleTest 编写测试程序:BusTub 测试参考指南

本指南以 GoogleTest 官方测试参考([testing.md](https://link.gitcode.com/i/ecb488e8b8f873d7073272f27cbe9a8c))为主体,系统讲解编写测试程序所需的宏、类与函数设施,并结合 BusTub 教学数据库仓库([test](https://link.gitcode.com/i/738e7accb55ba08a92c5aaca

gitblog_00702的博客 138

GoogleTest FAQ 实战指南:命名规则、断言陷阱与测试框架疑难问题深度解析

本篇指南以当前仓库内置的 GoogleTest 官方 FAQ([vendor/googletest/docs/faq.md](https://link.gitcode.com/i/6e5b5acdcd6e22b5a642f5cb81aa6343))为骨架,系统梳理测试命名规则、断言宏语义、death test 执行模型、test fixture 设计以及常见编译/链接错误等核心疑难问题,并结合仓库

gitblog_00609的博客 222

Apache Weex 核心测试实战:googletest 高级特性完全指南

本篇指南以 Apache Weex(Incubating)仓库内置的 googletest 官方高级文档为主体,系统讲解如何超越基础断言,掌握异常断言、谓词断言、浮点比较、死亡测试、参数化/类型化测试、事件监听器与命令行运行控制等高级能力。文中所有概念均结合仓库中 WeexCore 原生 C++ 测试工程(`weex_core/test`)的实际构建与用法展开,读者读完后既能完整理解 google

gitblog_00127的博客 201

把视频、网页和游戏变成 Windows 桌面背景

Windows 自带的壁纸选项只有静态图片,而 Lively Wallpaper 是一个开源免费的动态桌面方案,基于 WinUI 3 开发,能把视频、HTML5 网页甚至 Unity、Godot 游戏直接放到桌面上播放。它完全免费、无付费功能,且运行开销控制得比较克制。 ## 静态桌面能做什么 问题很简单:桌面背景从系统安装起就很少被更新,而 Windows 的个性化设置里并没有"播放动态内容

gitblog_00073的博客 160

BusTub 项目中的 GoogleTest 常见问题(FAQ)实战解析:命名规则、断言陷阱与测试夹具最佳实践

> 导读:本文以仓库内 [third_party/googletest/docs/faq.md](https://link.gitcode.com/i/2ee91c9035d62bbaee125d18dfececb1) 为骨架,逐条解析 GoogleTest 使用中最常踩的坑——从 `TEST`/`TEST_F` 的命名禁忌、`NULL` 与 `nullptr` 的断言差异、death test

gitblog_00423的博客 343

测试过滤器GoogleTest:--gtest_filter参数精准运行指定测试

在大型C++项目开发中,随着测试用例数量的指数级增长(通常达到数百甚至数千个),开发者面临着严峻的测试效率挑战。每次完整构建后执行全部测试套件可能消耗数小时,严重拖慢开发迭代速度。根据Google工程实践数据,一个包含1000个测试用例的项目,全量测试执行时间通常是精准执行单个测试的**200-500倍**。 **核心痛点**: - 全量测试执行耗时过长(>30分钟) - 定位特定模块测试困难 ...

gitblog_00728的博客 1204

Apache Weex 核心测试实战:Googletest FAQ 深度解读与源码印证

> 导读:Googletest 是 Apache Weex 核心引擎(weex_core)C++ 侧单元测试的底层框架,本文以官方 FAQ 文档为骨架,系统梳理测试命名、断言宏、Fixture、死亡测试等高频疑难点,并对照本仓库的实际测试工程(如 `weex_core/test` 的 CMake 配置与 `HelloTest.cpp`)逐一给出可落地的解决方案与源码依据。读完本文,你将能写出命名规

gitblog_00188的博客 155
上一篇: GoogleTest 使用指南 | TEST 语法
下一篇: GoogleTest 使用指南 | 测试私有静态方法
UestcXiye
博客等级 码龄8年 9029粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值