如何对私有变量进行单元测试?

2024-02-19

考虑一个链表类,我维护 2 个私有变量 1.firstNode 和 2.lastNode。因此,这些变量仅供内部使用,不通过 getter 公开。我想测试操作是否按预期修改这两个变量。例如:如果最后一个节点是重复的,则消除排序链表中的重复应该更改最后一个节点。

  1. 我应该仅为单元测试添加显式 getter 吗?

  2. 如果不是那么如何访问私有未公开变量的值?


您不应该测试私有变量,而只能测试公共变量。测试私有数据就是测试非常脆弱的实现细节。如果您要更改实现,这些测试将失败或不再编译。

相反,编写仅测试公共 API 的测试。在使用链表的示例中,您的测试应该修改列表,然后使用公共方法遍历结构,从一个节点到另一个节点,以确保所有节点都是正确的。

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

如何对私有变量进行单元测试? 的相关文章

随机推荐

  • 使用 Flask 从选择标签中获取值

    我是 Flask 新手 无法从我的选择标签中获取值 我努力了request form comp select 它返回一个错误请求 但是 当我尝试使用request form get comp select 我的返回页面返回一个空白列表 My
  • 是否可以知道RS232端口的连接状态?

    在 9 针电缆中 你们建议使用哪个信号 针来检查连接状态 到目前为止我正在使用DSR信号因为 在我正在测试的硬件中 如果电缆连接正确 则 DSR 信号是1如果断开连接 DSR 将转至0 然而 对于其他驱动程序和 或操作系统 DSR 在消息传
  • 不使用 string.h 库从字符串中删除字符

    我正在做一项作业 它要求从字符串中删除一些字符而不使用 string h 库 这是我的代码 int deleteFunc char chara 100 char a int i for i 0 i lt 100 i if a chara i
  • 错误 C2036:“Agent *const”:“向量”类中的大小未知

    我收到错误发生在vector类 例如 您访问的类 include lt vector gt 我只出现一次 而且我不知道为什么会发生 错误C2036 Agent const 尺寸未知 这也发生在向量中 有错误的代码在这里 size type
  • C# 将 double 转换为 float 错误[重复]

    这个问题在这里已经有答案了 在我的代码中 我有以下内容 其中 realScore 是浮点数 realScore Math Ceiling realScore 但我收到以下错误 无法将类型 double 隐式转换为 float 存在显式转换
  • Sublime Text 3 有集成终端吗?

    我通常使用 WebStorm IDE 进行 Node js 和 FE JavaScript 开发 然而 我正在考虑使用 Sublime Text 3 因为我在蹩脚的旧 Macbook Pro 上的计算能力已经耗尽 而 ST3 在内存和 CP
  • 调用函数时设置列名

    假设我们有一个数字 data framefoo并想要找到每两列的总和 foo lt data frame x 1 5 y 4 8 z 10 14 w 8 4 bar lt combn colnames foo 2 function x fo
  • 詹金斯附件-语法是什么?

    我试图让 Jenkins 将一个或一组文件附加到作业已完成的电子邮件通知中 我不断收到以下错误 发送电子邮件以触发 成功 错误 访问要附加的文件时出错 需要 Ant GLOB 模式 但看到了C p p etc html See Filese
  • 设置多线程调试 (/MTd) 时发生崩溃 (C++)

    在构建动态库 C 时 我们可以选择Windows的多线程调试 MTd 或多线程调试DLL MDd 运行时库 如果我们选择多线程调试 那么创建的动态库将负责库中使用的所有变量的内存分配 因此 以下示例将显示 MDd 设置有效而 MTd 设置失
  • WindowsError:[错误2]系统找不到指定的文件,无法在Python中解析

    我制作了一个 Python 程序 它将清理我下载的 torrent 文件和文件夹中存在的不必要的名称 以便我可以将其上传到我的无限 Google Drive 存储帐户 而无需太多麻烦 然而 它给了我 WindowsError Error 2
  • Spring Security,注销:将参数从/logout传递到/login

    我使用默认的 Spring Security 来处理注销 登录 我有一个控制器方法来处理 login 当我注销时 我看到 Spring Security 将我重定向到app login logout 这个 Spring 创建的参数的存在 有
  • Android Phonegap 滑动类型

    我正在 Android Phonegap 中开发一个应用程序 我需要在我的应用程序中应用 swype 如何申请 任何人都好心指导我 您可以使用 jGestures jQuery 库 http jgestures codeplex com j
  • 核心数据 - 使用谓词过滤一对多关系

    我的核心数据模型中有以下两个实体 Manufacture name other attributes Product name other attributes 我已经设置了一对多关系 Manufacturer manufactures l
  • Postman请求带body表单数据转json

    我和邮递员有问题 For one side I can make this request with the body in form data 但是 当我尝试使用 raw json 中的正文发送相同的请求时 我得到了 我正在尝试通过 An
  • 为什么 javascript 不在加载 Ext.Ajax.Request 的 .php 文件中执行?

    我想通过 ajax 加载 php 文件 该文件在加载时执行 ExtJS 脚本 从而修改 DOM 中已存在的现有 ExtJS 对象 但是 我什至无法从正在加载的页面执行 JavascriptExt Ajax request Firebug N
  • 如何通过代码编程获取设备的 IMEI/ESN 号码但在 android > 6 中

    我的安卓版本是棉花糖6 0 如何以编程方式在 android gt 6 中查找 获取 imei 号码 注意 我在 AndroidManifest xml 文件中添加了 READ PHONE STATE 权限
  • Laravel - 会话返回 null

    我第一次在 Laravel 中使用会话 并且尝试执行多步骤形式 所以我认为使用会话将是一个明智之举 但是下面的代码返回一个空值 我做错了什么 user information name gt request gt name email gt
  • 扩展 CodeIgniter 中的控制器类

    I have class MY Controller extends CI Controller和大配置文件部分的通用逻辑 所以我尝试创建class Profile extends MY Controller正如我所理解的那样 配置文件部分
  • 如何使用自定义元素将子自定义元素包装到 div 中

    我正在尝试创建一个包装器自定义元素 将其子自定义元素包装到 div 中 但子元素没有被包装 相反 一个空的 div 被插入到子元素之前的包装元素中
  • 如何对私有变量进行单元测试?

    考虑一个链表类 我维护 2 个私有变量 1 firstNode 和 2 lastNode 因此 这些变量仅供内部使用 不通过 getter 公开 我想测试操作是否按预期修改这两个变量 例如 如果最后一个节点是重复的 则消除排序链表中的重复应