注释使私有方法仅对测试类公开[重复]

2023-11-25

谁有解决这个共同需求的解决方案。

我的应用程序中有一个课程。

有些方法是公共的,因为它们是 api 的一部分, 有些是私有的,因为它们供内部使用,使内部流程更具可读性

现在,假设我想编写一个单元测试,或者更像是一个集成测试,它将位于不同的包中,将允许调用此方法,但是,我希望不允许正常调用此方法如果您尝试从应用程序本身的类调用它

所以,我在想类似的事情

public class MyClass {

   public void somePublicMethod() {
    ....
   }

   @PublicForTests
   private void somePrivateMethod() {
    ....
   }
}

上面的注释将私有方法标记为“公共测试” 这意味着,对于 test... 包下的任何类,将允许编译和运行时,而对于不在 test 包下的任何类,编译和\或运行时将失败。

有什么想法吗? 有这样的注释吗? 有一个更好的方法吗?

似乎你编写的单元测试越多,你就越被迫打破你的封装......


常见的方法是使私有方法受保护或包私有,并将该方法的单元测试放在与被测类相同的包中。

番石榴有一个@VisibleForTesting注解,但这仅用于文档目的。

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

注释使私有方法仅对测试类公开[重复] 的相关文章

随机推荐

  • 图问题:在 SQL Server 中通过 NOCYCLE 先前替换进行连接?

    问题 I have the following directed graph 还有这张表 CREATE TABLE dbo T Hops UID uniqueidentifier NULL From nvarchar 1000 NULL T
  • javascript regexp 用于 00-59(秒)之间的数字

    我想检查某个字段是否是有效的时间值 仅秒 所以我想接受从 0 到 59 的数字 我得出了这个 0 5 0 9 这几乎可以完成工作 但排除数字 7 8 9 如果用户数字 07 它就可以工作 但我不想强迫用户数字第一个 0 所以我尝试了这样的操
  • Google Maps API v3:如何将缩放级别和地图中心设置为用户提交的位置?

    我已经使用 Google 的本教程构建了一个网络应用程序 该应用程序可以从用户输入的位置找到最近的商店 http code google com apis maps articles phpsqlsearch v3 html 我的应用程序几
  • 使用 Beautiful Soup 抓取多个 URL

    我正在尝试从多个 URL 中提取特定的类 标签和类保持不变 但我需要我的 python 程序在我输入链接时抓取所有内容 这是我的工作示例 from bs4 import BeautifulSoup import requests impor
  • Doctrine2 ORM 不会刷新在脚本之外更改的对象

    我真的不知道如何给这个标题或搜索一个已经发布的问题 所以如果以前在这里见过这个问题 我深表歉意 我使用以下代码得到了一些不需要的结果 get object managers fooManager this gt getContainer g
  • Uint8Array JavaScript 用例

    我刚刚发现 Javascript 通过以下方式输入了数组this关联 我立刻很好奇这些对象对语言有什么好处 我注意到 UInt8Arrays 丢失了 map 类型函数 我将拥有普通数组对象 所以如果你想循环它们 你将需要一个for loop
  • 如何使用环境路径查找可能不完全限定的文件?

    我有一个可执行文件名称 例如cmd exe并需要解决其完全限定路径 我知道该 exe 出现在列出的目录之一中PATH环境变量 有没有一种方法可以解析完整路径 而无需解析和测试中的每个目录PATH多变的 基本上我不想这样做 foreach s
  • 如何在PHP中限制文件上传类型的文件大小?

    我有一个上传表单 正在检查文件大小和文件类型 以将上传的文件限制为 2 MB 文件类型为 pdf jpg gif 或 png 我的目标是 如果用户违反这些规则之一 则向他们显示一条警报消息 有四种情况 正确尺寸 正确类型 工作 正确尺寸 错
  • 带硬件加速的画布抗锯齿(Android API 11 及更高版本)

    我有一个简单的位图 我在画布中绘制并使用矩阵旋转 我遇到的问题是 使用硬件加速时 边缘在旋转时不会消除锯齿 这在关闭硬件加速的情况下完美运行 当然 像 setDrawFilter 这样的东西是没有用的 因为当硬件加速打开时它们会被忽略 ca
  • javascript中如何在不同html页面之间传递变量值

    我想传递选择的值项目清单到另一个页面 意味着如果我从列表中选择 abc 那么这个 abc 值会传递到下一个 html 表单 它应该只打开该配置文件页面 有什么方法可以在不同的 html 页面之间使用此变量 ui li icon li cli
  • 为什么 C# 中不调用所有静态构造函数(即父类的静态构造函数)?

    我有三节课 Base Derived and Final Derived源自于Base and Final源自于Derived 所有三个类都有一个静态构造函数 班级Derived作为一个名为的公共静态方法Setup 当我打电话时Final
  • Jenkins Groovy 构建后脚本用函数评估文件

    我正在使用以下代码构建后我的詹金斯工作步骤 evaluate new File Set BuildBadge groovy 因此 如果确实如此 它就会成功运行脚本not包含函数 如果在脚本中我定义了一个function例如 def addS
  • 带有整数的 if 语句[重复]

    这个问题在这里已经有答案了 我是 Java 新手 我正在寻找家庭作业方面的帮助 我不会发布我最初这样做的完整代码 但我认为这不会帮助我学习它 我有一个与类一起使用的程序 我有一个将验证选择的类 一个包含我的 setter 和 getter
  • Linux 上的 PHP 5.4:如何连接 MS SQL Server 2008?

    我有一台 Linux 服务器 Debian 6 安装了 Apache 2 2 和 PHP 5 4 我需要将我的应用程序与 MS SQL Server 2008 连接 我的应用程序使用 Zend Framework 1 11 和字符集 UTF
  • 如何在选择文本后弹出窗口?

    我似乎无法弄清楚这一点 我有一个 div 里面有一些文本 当用户选择其中的一部分 完全随机 无论他们想要什么 时 我希望出现一个小弹出窗口 其中包含文本 要启动弹出窗口 我可以这样做吗 textdiv click function 但是我怎
  • 出现“内容丢失”的 Turbo Frame 错误

    我正在尝试在 Rails 应用程序中使用turbo frame tag 来管理一些任务 我为我的任务创建了一个脚手架 我将要使用的页面包装在 Turbo 框架标签内 如下所示 h1 New task h1 br div gt div
  • 从 scala 脚本退出 Spark-shell

    我正在使用这个命令来运行 scala 脚本 spark shell i test scala 在脚本执行结束时 我仍然看到 Spark shell 正在运行 我在 test scala 脚本中使用了 q quit 来尝试退出 但它不起作用
  • BasicHTTPServer、SimpleHTTPServer 和并发

    我正在使用 python BasicHTTPServer 和 SimpleHTTPServer 编写一个小型 Web 服务器用于测试目的 看起来它一次只处理一个请求 有什么办法可以让它更快一点 而又不会太麻烦吗 基本上我的代码如下所示 我想
  • SessionNotCreatedException:消息:会话未创建:尽管安装了 Chrome v74,但此版本的 ChromeDriver 仅支持 Chrome 版本 74

    我开始在 python 中使用 selenium 当我尝试运行此代码时 它只是弹出一个错误 表明此版本的 chromedriver 仅支持 74 版本的 chrome 但我已经从这里下载了 74 版本 https chromedriver
  • 注释使私有方法仅对测试类公开[重复]

    这个问题在这里已经有答案了 谁有解决这个共同需求的解决方案 我的应用程序中有一个课程 有些方法是公共的 因为它们是 api 的一部分 有些是私有的 因为它们供内部使用 使内部流程更具可读性 现在 假设我想编写一个单元测试 或者更像是一个集成