使用 googletest 测试受保护成员

2024-02-26

谷歌测试时我对继承感到困惑。我有一个class A具有protected属性。如果我想访问那些我必须扩展该类,但同时我也需要扩展public ::testing::Test唯一的目的是gtest.

这个问题最优雅的解决方案是什么? 我也在努力避免#define protected public


为了避免在被测试类中留下测试痕迹,请使用带有固定装置的多重继承:

class ToBeTested
{
protected:
    bool SensitiveInternal(int p1, int p2); // Still needs testing
}

// Google-test:
class ToBeTestedFixture : public ToBeTested, public testing::Test
{
   // Empty - bridge to protected members for unit-testing
}

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

使用 googletest 测试受保护成员 的相关文章

  • 采用 std::vector 或 std::array 的模板函数

    我有一个函数 当前接受 2 个向量 其中可以包含任何普通的旧数据 template
  • 如何使用 Entity Framework 和 Identity 解决对象处置异常 ASP.NET Core

    我正在尝试编写一个控制器 该控制器接收来自 AJAX 调用的请求并通过 DBContext 对数据库执行一些调用 但是 当我发出命令时var user await GetCurrentUserAsynch 在对 DBContext 的任何调
  • Boost MPI 在监听列表时不会释放资源?

    这是一个后续问题如何释放 boost mpi request https stackoverflow com questions 44078901 how do i free a boostmpirequest 我在监听列表而不是单个项目时
  • 预编译头和 Visual Studio

    有没有办法设置 Visual Studio 解决方案参数 以便它只创建预编译头而不构建整个解决方案 具体来说 它是一个巨大的 C 解决方案 本身有许多项目 谢谢 仅选择 pch 创建者源文件 通常是 stdafx cpp 然后编译该文件 C
  • 从内存流播放视频文件

    只是好奇看看这是否可能 我有一个 Windows 应用程序 它从我的电脑上的 avi 文件读取所有字节 然后将其存储在 byte 中 现在我的内存中有 avi 文件 我想直接从内存将其加载到某种视频播放器控件中 我尝试过使用 wmplaye
  • 为什么像 BindingList 或 ObservableCollection 这样的类不是线程安全的?

    我一次又一次发现自己必须编写 BindingList 和 ObservableCollection 的线程安全版本 因为当绑定到 UI 时 这些控件无法从多个线程更改 我想理解的是why情况就是这样 这是设计错误还是故意的 问题是设计一个线
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • C# 中的抽象类和接口类有什么不同?

    C 中的抽象类和接口类有什么不同 An 接口不是类 它只是一个contract定义了public一个类的成员must实施 抽象类只是一个类 您从中可以cannot创建一个实例 通常您会使用它来定义一个基类 该基类定义了一些virtual方法
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • 查找方法不适用于 EF6.1 模拟

    我已经使用这些 msdn 指南设置了模拟 使用模拟框架进行测试 EF6 及以上 http msdn microsoft com en us data dn314429 var bsAc db BusAcnts FirstOrDefault
  • ASP.net WebForms - 在标记中使用 GetRouteUrl

    我一直在尝试弄清楚如何将路由功能与 ASP net 4 0 WebForms 一起使用 我将一条路线添加到我的路线集合中 void Application Start RegisterRoutes RouteTable Routes voi
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • 使用 dateTimePicker 在 DataGridView 中编辑日期

    我有一个DateTime我的 WinForms 中的专栏DataGridView 目前只能通过手动输入日期来编辑该字段 例如 2010 09 02 需要什么才能拥有一个DateTimePicker 或同等 用作编辑器 DataGridVie
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 展开 std::reference_wrapper 的成本

    Given include
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN

随机推荐

  • 即使 task_retry_limit=0,appengine 也会运行失败的任务两次

    我发现任务队列 API 中存在错误行为 当任务失败时 appengine 总是会再次运行它 即使我告诉它不要这样做 这是相关代码 NO RETRY TaskRetryOptions task retry limit 0 class Enqu
  • FastAPI 相当于 Flask 的 request.form,用于不可知的表单

    我尝试从 Flask 迁移到 FastAPI 我想知道是否有类似于 Flask 的东西 payload request form to dict flat False payload key payload key 0 for key in
  • 我可以使用 Fiddler 脚本修改 JSON 响应吗

    以下是我从服务器获得的响应 正文 我正在寻找修改一些键值对 我使用了以下方法 var bodystr oSession GetResponseBodyAsString var bodyjson Fiddler WebFormats JSON
  • 如何修复番石榴错误中找不到配置

    我尝试解决本地文件系统的依赖关系 为此 我编写了 ivy xml ivyconf xml 和 build xml 但是 我的脚本无法工作并且无法解决依赖关系 即无法找到 jar 文件 其背后的问题是什么 还有 我该如何解决呢 error E
  • 用于验证最大长度为 10 个字符的整数的正则表达式

    您能给我指出用于验证最大长度为 10 个字符的整数的适当正则表达式吗 有效号码包括 1234567890 不要忘记整数can为负 s 0 9 1 10 s 各部分的含义如下 匹配必须从字符串开头开始 s Any whitespace cha
  • 具有自定义 HTTP 路径的 Cloud Functions for Firebase

    有没有办法定义 HTTP 路径 在第一个 之后 来访问 Firebase 的云功能 我想要实现的是创建一个类似休息的路径系统来访问这些功能 我有一个GitHub https github com bateramos spotter serv
  • UIActivityIndi​​catorView 在加载完成后才显示

    我在当前导航到视图控制器上有一个按钮 连接到 IBAction 在 IBAction 中 我像往常一样使用 self view addSubView 创建一个 UIActivityIndi catorView 然后加载一些图片 我已经在指示
  • 如何在WPF中的Web浏览器控件中显示unicode字符

    我想在WPF的Web浏览器控件中显示不同语言的unicode字符 但它显示特殊字符 我必须在网络浏览器控件中设置任何设置吗 您没有告诉我们您如何将内容加载到WebBrowser 如果您导航到 URL 请确保服务器发送正确的charset编码
  • 如何获取组合框中的项目数?

    如何获取组合框中列出的项目数 Try var count comboBox Items Count
  • ASP.NET MVC 应用程序不会更新某些控制器

    我使用 Visual Studio 2012 中的 Web 应用程序发布 Web 选项发布到 IIS 当我发布时 控制台告诉我构建和发布成功 并且在大多数情况下 一切都正确发布 但有一个控制器最近没有发布 没有错误 但就是无法发布 我尝试删
  • 在 Android 中以编程方式更改 AppBarLayout 高度

    我正在尝试使用图像模式实现灵活空间本教程 http blog grafixartist com toolbar animation with android design support library 一切正常 请注意 AppBarLay
  • .NET 7 和 UseEndPoints()

    我正在尝试将 NET Core 3 1 项目转换为 NET 7 当我在我的Program cs class app UseEndpoints endpoints gt endpoints MapRazorPages endpoints Ma
  • Internet Explorer 中的 HTML5 元素:运行时插入

    我在 Internet Explorer 7 及更高版本中使用 HTML5 元素时遇到问题 未测试 IE6 我知道默认情况下 如果不使用 Javascript shiv IE 会拒绝识别常见的 HTML5 元素 例如 文章 或 标题 我使用
  • 如何在 Node.js 中追加到换行符

    我正在尝试使用 Node js 将数据附加到日志文件 并且工作正常 但它不会进入下一行 n似乎不适用于我下面的功能 有什么建议么 function processInput text fs open H log txt a 666 func
  • rethinkdb 带有过滤器和 getNearest 命令

    如何对其他命令 例如过滤器命令 的结果执行 getNearest 查询 var point r point 122 422876 37 777128 r db test table users filter tags tag getNear
  • 如何强制 Grails 仅使用一种语言?

    我想让我的 Grails 应用程序仅支持一种语言 我可以在某处定义该语言 完全忽略客户端的标头或 lang 参数 我有什么办法可以这样做吗 谢谢 定义一个LocaleResolver豆子在你的config spring resources
  • 我可以将 MVC 2 DataAnnotation 属性添加到现有属性吗?

    我使用生成的类作为模型 并且希望将 DataAnnotation 属性添加到其某些属性 由于它是生成的代码 我不想直接添加注释 还有其他方法可以将它们附加到财产上吗 我考虑过使模型成为一个接口 并使用分部类来获取生成的类来订阅它 假设可行的
  • iOS 5 SDK 以不同方式对待 UIView

    我的应用程序曾经在 xCode 4 0 2 中完美编译 但现在不再使用新 SDK 在 xCode 4 2 中正确编译 我的模态视图的工作方式非常不同 某些状态未被检测到 或者其他解雇不起作用 例如 它可以用来消除 2 个堆叠的模态视图 if
  • React Native:用选项卡动画缩小标题

    Goal 我试图创建一个带有动画收缩标题的视图 其中包含带有滚动内容的选项卡的选项卡视图 参见图片 Setup 我正在使用带有 TabNavigator 的反应导航 header 是一个具有固定高度的组件 当前位于 TabNavigator
  • 使用 googletest 测试受保护成员

    谷歌测试时我对继承感到困惑 我有一个class A具有protected属性 如果我想访问那些我必须扩展该类 但同时我也需要扩展public testing Test唯一的目的是gtest 这个问题最优雅的解决方案是什么 我也在努力避免 d