如何检查 Google Test 是否在我的代码中运行

2024-03-03

我有一段代码,如果正在进行单元测试,我不想运行它。我希望找到一些由 gtest 库设置的 #define 标志,我可以检查。我找不到用于此目的的一个,但在查看 gtest 标头后,我找到了一个我认为可以像这样使用的:

SomeClass::SomeFunctionImUnitTesting() {
    // some code here
    #ifndef GTEST_NAME
    // some code I don't want to be tested here
    #endif
    // more code here
}

这似乎不起作用,因为无论如何,所有代码都会运行。我可以检查另一个可能有效的标志吗?


Google Test 不需要或提供自己的构建包装器。有时您甚至不必重新编译源文件。您只需将它们与您的测试代码链接起来即可。您的测试代码调用已编译的库代码。您的库代码可能甚至不包含 Gtest 标头。

如果您希望您的库代码在测试下以不同的方式运行,那么您首先需要确保您的库代码是compiled不同的测试下。您将需要另一个构建目标。在针对该构建目标进行编译时,您可以定义一个符号来指示您的代码处于测试模式。我会避免GTEST该符号的前缀;留给Google自己的代码使用。


实现您正在寻找的目标的另一种方法是使用依赖注入。将您的特殊代码移动到另一个例程中,可能在它自己的类中。将指向该函数或类的指针传递给您的SomeFunctionImUnitTesting函数并调用它。当您测试该代码时,您可以让测试工具将不同的函数或类传递给该代码,从而避免出现有问题的代码,而无需多次编译代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 Google Test 是否在我的代码中运行 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 按成员序列化

    我已经实现了template
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 重载<<的返回值

    include
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 按优先级和组值对结果进行排序,然后过滤结果

    这是我的 DynamoDB 当前数据 我的目标是创建一个查询 该查询过滤组集中的结果 类似于 默认 然后按优先级排序 然后将结果过滤到loggedIn true和status idle的结果 在 SQL 中它会是这样的 SELECT FRO
  • 如何使用 JavaScript 防止屏幕休眠

    我有一个用例 我们不希望正在进行测试的用户在测试时睡眠超时 即 3 小时 我正在查看 nosleep js 但我遇到了 cpu 过度使用问题 因为它在 Windows 中无法工作 我想知道考试应用程序是如何做到这一点的 以及 YouTube
  • 如何在詹金斯中替换摩卡UTF8复选标记符号

    当我在詹金斯中运行摩卡测试时 在控制台输出上我可以看到 而不是 检查标记 utf 8 字符 如何将这些符号替换为人类可读的格式 修改默认报告者 最简单的方法 修改默认报告者 https github com mochajs mocha bl
  • 如何在 Java 中对 Hive 进行异步调用?

    我想以异步方式在服务器上执行 Hive 查询 Hive 查询可能需要很长时间才能完成 因此我不想阻止调用 我目前正在使用 Thirft 进行阻塞调用 在 client execute 上阻塞 但我还没有看到如何进行非阻塞调用的示例 这是阻止
  • 图片来自流问题

    我在从流创建图像时遇到问题 在我的 Windows 电脑上 它分叉得很好 在 ubuntu 服务器上 它抛出一个错误 System ArgumentException A null reference or invalid value wa
  • WPF MenuItem.Icon 尺寸

    所以我有一个 MenuItem 在 ContextMenu 中 如果它确实有影响 我不认为它有影响 我想使用 MenuItem Icon 属性在 MenuItem 中显示图标 下面是执行此操作的 XAML 代码
  • HttpClient PCL Cookie 未应用于请求

    我使用 NET HttpClient for PCL 2 2 15 作为跨 Windows Phone 8 Windows 8 和 NET 4 5 的通用库 但是 我没有看到 cookie 被应用于请求 我使用以下代码设置 HttpClie
  • 这段代码是什么意思“ofstream fout(getenv("OUTPUT_PATH"));”

    我对 cpp 还是个新手 如果有人能帮助我理解这行代码 我将不胜感激 ofstream fout getenv OUTPUT PATH 这段代码我几乎看到了每一个 Hackerrank 挑战 这段代码的目的是什么 我说 当有疑问时 简化 当
  • ListView 滚动混乱

    我扩展了基本适配器 我遇到了一些奇怪的问题 当我滚动此列表视图时 我的最后一个项目被第一个项目替换 下次当我滚动时 另一个项目等等 有时它是正确的 为什么这段代码会发生这种情况 Override public View getView fi
  • 如何让 DataAnnotations 在 asp.net 4.5 WebForms 中工作?

    我正在使用带有模型绑定和实体框架 5 的 net 4 5 WebForms 我的网络表单的一部分
  • Invoke-ASCmd :身份验证失败:用户界面不可用时需要用户 ID 和密码

    我正在尝试使用 Azure DevOps 通过 CICD 刷新 已 部署的表格模型的凭据 利用调用ASCmd在 PowerShell 中刷新凭据 当我提供租户 ID 应用程序 ID 和密钥时 该脚本在本地运行良好 但是 当我从 Azure
  • 无法构建:如何为新模块添加 Android 构建配置

    现在我正在将我的 Android 代码转换为模块化架构方法 尝试从 聊天 模块添加对 应用程序 模块的依赖项时遇到问题 我有以下 app 模块的构建配置 android lintOptions checkReleaseBuilds fals
  • 当 filesystem::path 被破坏时程序崩溃

    以下程序崩溃 include
  • 右值引用上的 std::vector::emplace_back

    我在类中有以下函数 void add state std string st state emplace back st state is a vector st根据我的理解 是一个左值 在这种情况下对字符串的右值引用 如果 我想搬家st到
  • 在 Angular2 中添加动态属性

    我有现有的 javascript 函数 用于使用 setAttribute 函数创建动态元素 现在我想将属性 ngModel 附加到此元素中以进行双向数据绑定 我尝试添加这个使用 obj setAttribute ngModel 模型名称
  • macOS Safari 缓存响应,而标头指定不缓存

    服务器对 GET 请求的响应具有以下标头 HTTP 1 1 200 OK Content Type application json charset utf 8 Pragma no cache Date Thu 08 Feb 2018 19
  • 使用我自己的 SSL 证书与 Google Cloud Run(完全托管)进行 SSL 固定

    我想要固定完全托管的 Google Cloud Run 集群的证书 我可以固定 Google 生成的 SSL 证书 但我不知道我是否可以依赖他们保留相同的证书直到其过期 而且我无法让客户端为他们将来生成的 SSL 证书做好准备 因为我不在
  • Unix,将文件分割成最大 N 字节的块,保持完整的行

    我想将文件拆分为最大 N 字节的块 同时保留完整的行 类似下面的内容在精确的字节边界上分解每个块的第一行和最后一行 split b 100m d data tsv data tsv 听起来像是一份工作split C split C 100m
  • 检索 Excel 中列等于某值的单元格列表

    我正在尝试在 Excel 中执行某些操作而不使用 VBA 宏 我怀疑这是可能的 但到目前为止还有一些空的 基本上 对于表中的值 我想有条件地检索 A 列中所有值的列表 其中 B 列等于我提供的值 例如 如果 B 列等于 0 我想要一个函数
  • 如何检查 Google Test 是否在我的代码中运行

    我有一段代码 如果正在进行单元测试 我不想运行它 我希望找到一些由 gtest 库设置的 define 标志 我可以检查 我找不到用于此目的的一个 但在查看 gtest 标头后 我找到了一个我认为可以像这样使用的 SomeClass Som