JUnit 测试私有变量? [复制]

2024-01-23

我被分配了对一个我从未直接使用 JUnit 进行过工作的类进行单元测试的任务,并且严格禁止更改包中的代码。这通常不是问题,因为我们的大多数单元测试只是为了功能和输入/输出一致性,这可以简单地通过运行例程并检查其返回值来完成。

然而,偶尔需要检查类内的私有变量,或者直接编辑私有变量来检查某些内部行为。有没有一种方法可以访问这些内容,无论是通过 JUnit 还是任何其他方式,以进行单元测试,而无需实际更改原始源代码包中的任何代码?如果不是,那么在现实世界中,单元测试人员与编码人员可能不是同一个人,程序员如何处理这个问题?


首先,您现在的处境很糟糕 - 任务是为最初不是您创建的代码编写测试,并且没有进行任何更改 - 噩梦!与你的老板交谈并解释,如果不使其“可测试”,就不可能测试代码。为了使代码可测试,您通常会进行一些重要的更改;

关于私有变量。实际上你永远不应该这样做。旨在测试私有变量是当前设计出现问题的第一个迹象。私有变量是实现的一部分,测试应该关注行为而不是实现细节。

有时,私有字段通过一些 getter 暴露给公共访问。我这样做,但尽量避免(在注释中标记,例如“用于测试”)。

由于您无法更改代码,因此我看不到检查私有变量的可能性(我的意思是真正的可能性,而不是像反射黑客等)。

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

JUnit 测试私有变量? [复制] 的相关文章

  • JBoss AS 5 中的共享库应该放在哪里?

    我是 Jboss 新手 但我有多个 Web 应用程序 每个应用程序都使用 spring hibernate 和其他开源库和 portlet 所以基本上现在每个 war 文件都包含这些 jar 文件 如何将这些 jar 移动到一个公共位置 以
  • 如何在Mac上使用eclipse安装jetty

    我是一个新手 jetty 和 RESTful API 我想使用 Jetty 创建 REST 服务 并希望将嵌入式 jetty 与 eclipse 一起使用 任何人都可以建议我在 Mac OS 中使用 Eclipse 安装 Jetty Jet
  • org.postgresql.util.PSQLException:协议错误。会话设置失败

    我知道这些类型的问题已经存在 但提供的解决方案对我不起作用 在我的应用程序中 没有版本不匹配的黑白驱动程序和 PostgreSQL 服务器 我还没有找到任何其他解决方案 我正在使用 PostgreSQL 服务器 9 4 和 postgres
  • JAX-WS:有状态 WS 在独立进程中失败

    我在 Tomcat 上部署了一个有状态的 Web 服务 它由工厂服务和主要 API 服务组成 并且工作得很好 工厂服务将 W3CEndpointReference 返回到主 API 实例 客户端使用会话 现在 我尝试将相同的服务作为独立应用
  • 如何屏蔽 Protobuf 中的某些字段

    我找不到一种方法来屏蔽 protobuf 结构中的某些字段 我确实阅读了有关 FieldMaskUtil 的内容并尝试了几个示例 但它似乎做了相反的操作 即复制 FieldMask 中提到的字段 这与我想要的不同 这是示例结构和相应的测试代
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • 如何在命令提示符中检查 JAVA_OPTS 值?

    我们的应用程序部署 JBoss 服务器然后抛出错误 PermGen space 然后在 jboss bat 和配置文件中设置 permgen 变量中的 java OPTS JAVA OPTs 中是否有值 assige 如何检查 如何在命令提
  • XSLT:我们可以使用abs值吗?

    我想知道在 XSLT 中我们是否可以使用 math abs 我在某处看到过这个 但它不起作用 我有类似的东西
  • Java 类:匿名类、嵌套类、私有类

    有人能解释一下Java中匿名类 嵌套类和私有类之间的区别吗 我想知道与每个相关的运行时成本以及每个编译器的方法 这样我就可以掌握哪个最适合用于例如性能 编译器优化的潜力 内存使用以及其他 Java 编码人员的普遍可接受性 我所说的匿名类是指
  • 使用 jackson 序列化 Map.Entry 时出现问题

    如果我尝试反序列化以下存储为字符串的类型 List
  • Hibernate @OneToMany 注释到底是如何工作的?

    我对 Hibernate 还很陌生 我正在通过教程学习它 我在理解到底如何一对多注释作品 所以我有这两个实体类 Student代表一个学生并且Guide代表指导学生的人 因此 每个学生都与一名向导相关联 但一名向导可以跟随多个学生 我想要一
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 在方法内声明类 - Final 关键字 [重复]

    这个问题在这里已经有答案了 给定方法中的以下内部类 IsSomething public class InnerMethod private int x public class Something private int y public
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • SWT - 与操作系统无关的获取等宽字体的方法

    SWT 有没有一种方法可以简单地获得跨各种操作系统的等宽字体 例如 这适用于 Linux 但不适用于 Windows Font mono new Font parent getDisplay Mono 10 SWT NONE 或者我是否需要
  • java数据结构模拟数据树

    我需要帮助定义使用什么方法 我有一个 SOAP 响应 给我一个 xml 文件 我需要在屏幕上显示 3 个相关列表 当您在第一个列表中选择一个项目时 相应的选择将出现在第二个列表中 依此类推 我只对从 xml 流中提取数据后如何有效地组织数据
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright
  • 条件查询:按计数排序

    我正在尝试执行一个标准查询 该查询返回 stackoverflow 中回答最多的问题 例如常见问题解答 一个问题包含多个答案 我正在尝试使用标准查询返回按每个问题的答案数排序的回答最多的问题 任何人都知道我应该在 hibernate cri

随机推荐

  • 将 Mercurial 与 Cygwin 一起使用?

    我们一直在尝试将 Mercurial 与 Cygwin 在 Windows 上 一起使用 但遇到错误 因为 Cygwin 使用正斜杠 而 Mercurial 似乎需要反斜杠 有解决方法吗 问题示例 hg status M src myfil
  • 自动运行可移动驱动器

    自动运行在 Windows 中被禁用 我正在寻找替代方案 我得到了这个 AutoIt 脚本 DBT DEVICEARRIVAL 0x00008000 WM DEVICECHANGE 0x0219 GUICreate GUIRegisterM
  • Knockout.js 模板未更新 dependentObservable 上的 UI 绑定

    该应用程序是在 vs2010 中使用 ASP NET MVC 3 编写的 我有一个淘汰赛模板 它使用 a 更新一些 css 和可见绑定 依赖的可观察的 仅当我绑定时才会出现此问题 选择元素的值 间隔ID 如果这没有被绑定 UI 按预期更新
  • 如何链接“并行”类层次结构?

    我有一个小的类层次结构 其中每个类对应于某个 TComponent 后代 例如基类 TDefaultFrobber 及其后代 TActionFrobber 和 TMenuItemFrobber 分别对应于 TComponent TCusto
  • 软件/硬件支持的 Android 密钥库的使用以及可能的安全/可用性缺陷

    我目前正在研究在 Android 应用程序中存储 使用密钥的可能性 我发现了尼古拉 埃连科夫的博客 http nelenkov blogspot com关于这个主题非常有帮助 我学到了很多关于 Android 密钥库和一些基于硬件的实现的知
  • Jetty默认是非阻塞的吗?

    请告诉我 Jetty 默认情况下是否是非阻塞 Web 服务器 例如 下面的代码将 Jetty 作为非阻塞 Web 服务器运行 Server server new Server 8080 ServletContextHandler conte
  • “正在缓存中间结果”是什么意思?

    我有一套n向量存储在3 x n matrix z 我发现外部产品使用np einsum 当我使用以下方法计时时 timeit v np einsum i j gt ij z z 我得到了结果 The slowest run took 7 2
  • 如何将子节点附加到特定位置

    如何将 childNode 附加到 javascript 中的特定位置 我想将 childNode 添加到 div 中的第三个位置 它后面还有其他节点需要向后移动 3变成4等 您可以使用 insertBefore https develop
  • 使用 regex 或 ToDicitionary 获取 url

    我怎样才能获取 oauth verifier RN9vtxDFfozW51CSTuls0J4C oauth token 4 2F3uYq 3vYUSjXaFXtS74B laW2V4d RN9vtxDFfozW51CSTuls0J4C an
  • VS-code 中分支名称旁边的 * 是什么意思?

    我不知道为什么会有 在 Visual Studio 代码中我的 git 分支名称旁边 有什么我应该警惕的吗 大多数 shell 着色插件和 IDE 通常使用 对于分支名称表示当前分支有已修改的文件 或者有时仅表示本地存储库有已创建的文件 但
  • 自定义节样式在sectionList REACT NATIVE中

    你知道如何在React native的sectionList组件中制作水平部分 特定的 吗 我想让第二部分水平 我尝试使用 flex 1 和 flexDirection row 修改 renderItem 中的项目样式 但不起作用 任何人都
  • 为什么 Groovy 正则表达式匹配器不能被否定?

    任何人都可以解释以下内容吗 println x x println x x result true true 没有 groovy 中的运算符 这是一个组合 and println x x 相当于 println x x 你需要的是 prin
  • 通用回调

    Extends https stackoverflow com questions 2485058 equivalent to window settimeout for c Related https stackoverflow com
  • 以编程方式更改应用程序的AppPool

    我需要更改某个网站下所有 选定应用程序的应用程序池 我的 IIS 上有所有网站和应用程序池 但我无法更改它们 有任何想法吗 这是我到目前为止所做的 这对我来说看起来很奇怪 因为只有字符串改变 而不是对象 private void Chang
  • 将 Google Closure 模板与 jQuery 结合使用

    我们开始使用 JavaScript 和 HTML5 创建一个应用程序 该应用程序将使用 REST API 来访问服务器资源 利用我们的开发团队已经熟悉的 jQuery 的强大功能和易用性 该应用程序将成为多语言版本 后来我们决定使用 Jav
  • 为 SQL Server 组合“LIKE”和“IN”[重复]

    这个问题在这里已经有答案了 是否可以合并LIKE and IN在 SQL Server 查询中 所以 这个查询 SELECT FROM table WHERE column LIKE IN Text Link Hello World 查找以
  • 如何检查该行是否在每页的第一行?

    我有要打印的数据列表 我想知道是否有任何方法可以查找该行是否是 JasperReports 报告中每个页面的第一行 有一个内置变量名 V PAGE COUNT 第 COUNT页 内置变量 包含生成当前页面时处理的记录数 对于页面上的第一条记
  • git 克隆时远端意外挂断

    My git尝试克隆存储库一段时间后 客户端反复失败并出现以下错误 这里可能有什么问题 Note 我已向 GIT 托管提供商注册了 SSH 密钥 Receiving objects 13 1309 10065 796 00 KiB 6 Ki
  • 尝试使用 Azure SDK 2.5 进行发布会导致 null-ref(对象引用未设置为对象的实例)[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 We upgraded我们来自 SDK 2 4 的 Azure 部署项目至 SDK 2 5 该项目有两个工人角色 将 2 4 项目发布到云服
  • JUnit 测试私有变量? [复制]

    这个问题在这里已经有答案了 我被分配了对一个我从未直接使用 JUnit 进行过工作的类进行单元测试的任务 并且严格禁止更改包中的代码 这通常不是问题 因为我们的大多数单元测试只是为了功能和输入 输出一致性 这可以简单地通过运行例程并检查其返