如何对私有方法进行单元测试?

2024-05-21

我正在构建一个类库,它将有一些公共和私有方法。我希望能够对私有方法进行单元测试(主要是在开发时,但它也可能对未来的重构有用)。

这样做的正确方法是什么?


如果您想对私有方法进行单元测试,则可能会出现问题。单元测试(一般来说)旨在测试类的接口,即其公共(和受保护)方法。您当然可以“破解”此问题的解决方案(即使只是通过公开方法),但您可能还需要考虑:

  1. 如果您想要测试的方法确实值得测试,则可能值得将其移至自己的类中。
  2. 向调用私有方法的公共方法添加更多测试,测试私有方法的功能。 (正如评论者指出的,只有当这些私有方法的功能确实是公共接口的一部分时,才应该这样做。如果它们实际上执行对用户隐藏的功能(即单元测试),这可能很糟糕)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • XP及PHP MYSQL 练级系统

    我已经查看了所有提出的问题和答案 但我似乎找不到最适合我的答案 我想做的是开发一个系统 当用户达到一定的 XP 限制时 系统会进入下一个级别 它显示了下一个 XP 之前需要多少 XP So lvl1 0 gt lvl2 256 gt lvl
  • Emberjs 将多个控制器加载到一个控制器中

    SCENARIO我目前有一个IndexRoute 我想将另外 3 个控制器加载到其中 另外 3 个控制器称为Sports News Business 我阅读了 embersjs 文档 它指出您需要实现renderTemplate钩入Inde
  • Next.js 嵌套动态文件夹路由

    Update 由于 category slug index js 导致此错误getServerSideProps 我尝试做index js在产品文件夹下 它可以工作 这意味着它可以与 category slug 一起使用getServerS
  • Gerrit 和 Active Directory

    我正在尝试设置 Gerrit 以使用我们的公司 Active Directory 进行身份验证 我知道很多人都设法让它发挥作用 但它对我来说不起作用 如果我运行一个ldapsearch命令如下我得到了正确的结果 所以我知道我的搜索字符串是正
  • 如何解决本机反应的权限被拒绝错误?

    UPDATE 在终端中我看到这个文件有 rw r r 我需要运行什么命令才能将其更改为正确的权限 我正在尝试跑步 react native run ios 我不断收到如下错误 return binding open pathModule m
  • SpriteKit 碰撞检测中 SKSpriteNode 之间的间隙

    我已经尝试解决这个问题很长一段时间了 我有一个具有简单平台物理原理的游戏 其中玩家跌倒在一个方块上 这可以阻止他跌倒 这是可行的 但是玩家停止的位置和实际对象 精灵节点的位置之间存在明显的差距 这是一个屏幕截图 它应该是不言自明的 clas
  • 如何使用 Javascript 访问 iframe 元素?

    我有一个网页 其中 iframe 中有一个文本区域 我需要从其子页面 JavaScript 中读取此文本区域的值 目前通过使用window parent getelementbyID value在 JavaScript 中 我能够获取父页面
  • 如何在不使用 .toPandas() hack 的情况下提取 PySpark 中对长度敏感的特征?

    我是 PySpark 的新手 我想翻译特征提取 FE 将 pythonic 部分脚本放入 PySpark 中 首先 我有所谓的 Spark 数据框sdf包括 2 列 A 和 B 下面是示例 data A B https example1 o
  • 部署的 Firebase 函数无法对外部 API 执行 HTTP GET? [复制]

    这个问题在这里已经有答案了 我正在尝试创建我的第一个 Google Home Action 其功能与我的 Amazon Alexa Skill 相同 此操作的工作方式是 您执行一个意图 然后调用我的代码中的一个函数 调用该函数时 它会向外部
  • 如何在node.js中的一定时间后强制解决承诺? [复制]

    这个问题在这里已经有答案了 我正在尝试从其 url 下载大量图像 然后在 Node js 中创建一个 PDF 文件 我正在使用图片下载器 https www npmjs com package image downloader模块下载承诺链
  • 菜单作为水平无序列表或表格?

    我有一个无序列表 水平显示为页面的顶部菜单栏 我已经让它显示得相对较好 尽管我一直在调整 IE6 和 IE7 的间距 因为它无法正常显示 令人震惊 无论哪种情况 使用表格来显示菜单还是使用一些CSS hack 我找不到解决方法 会更好吗 显
  • 理想的 PHP 会话大小?

    我有一个 PHP 表单 抵押应用程序 大约有 400 个字段 该网站的流量会很低 对于进入 MySQL 数据库的 400 个字段 理想的会话大小是多少 In php ini我要设置什么 我应该设置我缺少的任何内容吗 会话的大小没有限制 但
  • 如何在 Laravel 5 中对合并集合进行分页?

    我正在创建一个包含两种类型的对象的流 BluePerson 和 RedPerson 为了创建流 我获取所有这两个对象 然后将它们合并到一个集合中 这样做之后 我需要对它们进行分页 但是分页似乎是针对雄辩的模型和数据库查询 而不是集合 我见过
  • Android MediaPlayer:视频查找导致 onSeekComplete 被调用两次

    我在这里做错了什么 我设置了 onSeekCompleteListener 我准备了一部电影 我进行了一次搜索 立即调用 onSeekComplete 然后延迟一段时间后我播放电影 然后再次调用onSeekComplete 怎么又来了 这是
  • 使用 AES 解密时输入数据不是完整的块

    我正在尝试加密来自 oracle 的数据 然后使用 C 解密它 到目前为止 我设法编写了一个在 C 和 Oracle 中加密数据的代码 并且得到了匹配的结果 我试图用 C 解密数据 但收到错误 输入数据不是一个完整的块 甲骨文加密 SELE
  • 更新:随机将行添加到矩阵中,但遵循严格的规则

    以下是一个更大的矩阵的一部分 0 1 0000 1 0000 77 0000 100 0000 0 0 2500 0 1 0000 1 0000 72 0000 100 0000 0 2500 0 2500 0 1 0000 1 0000
  • ipad safari 中的高分辨率 PNG 文件

    我有一些 asp net 站点 显示从高分辨率 tiff 文件转换而来的 png 图像 图像通过简单的 img 标签显示 问题是 wneh png 的分辨率很大 它在 ipad 的 safari 浏览器中无法正确显示 但大多数 png 文件
  • 使用 OpenSL ES Android 同时播放多种音效

    我正在使用 OpenSL ES 在我的项目中播放音乐和声音 我用过原生音频样本作为开始 它可以很好地再现背景音乐和单个声音 但是当我尝试同时再现两个或多个声音时 声音不会同时再现 因为当播放所有先前的缓冲区时 声音缓冲区会排队等待播放 然后
  • 如何排除 XSD 中的根元素?

    我在 XSD 文件中定义了几个元素 稍后在文档中将它们用作参考 我确实希望这些 引用 元素中的任何一个都能构成一个有效的 xml 文件 例如我有
  • 如何对私有方法进行单元测试?

    我正在构建一个类库 它将有一些公共和私有方法 我希望能够对私有方法进行单元测试 主要是在开发时 但它也可能对未来的重构有用 这样做的正确方法是什么 如果您想对私有方法进行单元测试 则可能会出现问题 单元测试 一般来说 旨在测试类的接口 即其