使用 JMockit 模拟私有静态字段?

2024-04-17

我有一个像下面这样的课程;

class ClassA {
    private static File myDir;

    // myDir is created at some stage

    private static String findFile(final String fileName) {
       for (final String actualBackupFileName : myDir.list()) {
           if (actualBackupFileName.startsWith(removeExtensionFrom(backupFile))) {
               return actualBackupFileName;
            }
       }
    }
}

因此,基本上,我想通过模拟 File 类来测试此类,以便在调用 list() 时它返回我在测试类中定义的字符串列表。

我有以下内容,但目前不起作用,可能有一些明显的我做错了 - 我是 JMockit 的新手 - 非常感谢任何帮助!

@Mocked("list") File myDir;

@Test
  public void testClassA() {
    final String[] files = {"file1-bla.txt"};

    new NonStrictExpectations() {{
      new File(anyString).list(); 
      returns(files);
   }};

   String returnedFileName = Deencapsulation.invoke(ClassA.class, "findFile","file1.txt");

   // assert returnedFileName is equal to "file1-bla.txt"
  }

运行上述测试时,我在 ClassA 中的 myDir 字段中收到 NullPointerException - 所以看起来它没有被正确模拟?


您可以使用 Deencapsulation 类中的 setField 方法。请注意下面的示例:

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

使用 JMockit 模拟私有静态字段? 的相关文章

  • 具有 OpenGL ES 3.1 上下文的 GLSurfaceView

    我正在使用 OpenGL 开发 Android 我知道如何使用GLSurfaceView及其自定义派生类 使用以下方法创建 OpenGL ES 2 0 上下文GLSurfaceView setEGLContextClientVersion
  • 如果 Java 中的字符串中有多个空格,如何将它们压缩为单词之间的单个空格?

    如果字符串的单词之间有多个空格 The cat sat on the mat 如何将其变成一个单独的空间 The cat sat on the mat 我尝试了这个但没有成功 myText myText trim replace 用正则表达
  • javax.validator 与 spring 组件

    我将 javax validation 与 Spring 一起使用 在我的测试 常规 中 我明确创建了验证器 import javax validation Validation import javax validation Valida
  • Java 递增/递减运算符 - 它们的行为方式是什么,功能是什么?

    开始学习Java已经三天了 我有这个程序 但我不明白其中的代码main方法与 and 运营商 我什至不知道该怎么称呼他们 这些操作员的名字 谁能给我解释一下这是怎么回事 class Example public static void ma
  • 使用 lambda 内联过滤避免意外 null

    我有每个元素的列表 我想这样做 使用Java 8 disabledUsersOnLDAP stream forEach user gt usersRepository findEnabledByUsername user getUserNa
  • 如何编写允许特殊字符 DOT 的正则表达式?

    如何编写允许用户名中包含字符 DOT 的正则表达式 例如 R Robert X A Pauline 用反斜杠转义点
  • XMLEncoder 和 XStream 的相对优势是什么?

    假设我想用XML存储许多小的配置对象 并且我不太关心格式 这XML解码器 http java sun com j2se 1 5 0 docs api java beans XMLDecoder htmlJDK 中内置的类可以工作 据我所知
  • 如何为 JAXB MOXy 编写 JsonStructure (JSR-353) XmlAdaptor?

    我需要将一些任意 JSON 内容包装到 POJO 中 然后使用 MOXy JAXB 序列化为 JSON 但无法弄清楚如何绑定JsonObject与 JAXB 一起 我只需要整理JsonObject 不需要解组 即拥有 POJO XmlRoo
  • 并发 log4j

    我有自己的日志引擎 它将日志写入带有阻塞队列的单独线程上 为了使用 标准软件 我正在考虑切换到 log4j 我不希望我的高并发软件因日志命令而变慢 这些日志命令在调用命令时将所有内容写入磁盘 log4j 可以用作垃圾箱吗 Log4j 是大多
  • 如何在RecyclerView中实现setOnScrollListener

    当用户到达列表中可见的项目时 如何在底部显示进度栏 我已经编写了一个代码 其中我使用网络服务获取数据 现在我想填充部分记录 因为我有大约630 条记录在我的 JSON 中 这是我用来从 JSON 获取数据并填充到 RecyclerView
  • Java正则表达式以数字和固定长度开头的字符串

    我制作了一个正则表达式来检查 String 的长度 所有字符都是数字并以数字开头 例如 123 以下是我的表情 REGEX 123 d 9 但它无法检查字符串的长度 它仅验证那些长度为 9 并以 123 开头的字符串 但如果我传递字符串 1
  • 无法实例化类:org.jnp.interfaces.NamingContextFactory

    这是我的代码 扬声器远程 java package test import javax ejb Remote Remote public interface SpeakerRemote String sayAPhrase String ph
  • 使用 Scanner 类输入

    我从过去的经历中了解到的是nextInt or nextDouble 将继续搜索 直到在同一行或下一行中找到整数或双精度数 这并不重要 同时通过扫描器类读取字符串作为输入next 考虑空格之前的那些字符串并将光标保持在同一行 其中nextL
  • 如何使用Netbeans的不确定进度条样式?

    我正在使用 Nimbus 外观和感觉编写 Java 应用程序 不幸的是 Nimbus 外观和感觉的不确定 JProgressBars 的外观是AWFUL 见下文 另一方面 我注意到 Netbeans 与 Nimbus 的外观和感觉有不同的不
  • 如何重定向到另一个 URI 并访问先前 modelAndView 中的对象

    我有以下代码 我想访问 nextPage jsp 上的 booleanValueObj 这是怎么做到的 该对象并不总是可用于每个请求的 nextPage 方法 因此 requestParam 似乎不合适 RequestMapping met
  • 使用外部属性文件执行 jar

    我有一个带有主类的 jar 可以像这样执行 java jar test jar 罐子里有类似的东西 public static void main String args throws IOException InputStream is
  • TextField“更改”事件仅在模糊时触发

    通常 Change 事件将在 TextField 失去焦点 模糊 后触发 但我需要它在字段值发生变化时立即触发 而不需要失去对该字段的关注 KeyListener 不会删除它 因为该值可能来自条形码扫描仪等 有什么办法可以做到这一点吗 提前
  • 像耐心/克朗代克纸牌游戏一样拖动节点

    我正在做克朗代克游戏 逻辑一切正常 我只是在使用 javafx 中的 UI 时遇到问题 我一直在尝试从 桌面堆 周围移动 拖动卡片 但没有达到预期的结果 我的卡片是一个 ImageView 里面有一个图像 这些卡片位于窗格内 Pane ta
  • GSON 解析空日期字段时抛出异常

    我正在使用 GSON 反序列化一些 JSON JSON 是 employee id 297 surname Maynard givenname Ron lastlogin 员工对象有一个日期字段lastlogin public class
  • 在Java中将资源文本文件读取到字符串[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有办法将资源中的文本文件读入字符串 我想这是一个流行的要求 但在谷歌搜索后我找不到任何实用工具 Y

随机推荐

  • 以编程方式关闭 USB 端口的电源

    我正在开发一个项目 我想使用这些 http www woot com blog post usb powered woot off lights 2 http www woot com blog post usb powered woot
  • git 克隆失败并显示“ssh_dispatch_run_fatal”

    我已经配置了ssh密钥 但仍然无法成功git克隆 错误信息是 git clone email protected cdn cgi l email protection alimail frontend ragusa git Cloning
  • 使用 VBA 实现简单的替换密码

    我正在尝试编写一个程序来更改字符串中的字母 但我一直遇到一个明显的问题 即如果它更改了值 例如将 A 更改为 M 当它更改为 M 时 它会将 M 更改为其他值 因此 当我运行代码将其全部更改回来时 它会将其转换为好像该字母最初是 M 而不是
  • CommandError:使用 Flask-Migrate 迁移时无法找到由“...”标识的修订版本

    我今天开始使用 Flask Migrate 并将其安装在一个测试项目上 但是我收到以下错误 alembic util exc CommandError 无法找到由 e39d16e62810 重现步骤 运行 python create db
  • 如何避免子文件夹上的 svn:mergeinfos ?

    我们尝试仅将 svn mergeinfo 属性保留在根分支文件夹上 然而 我们不断看到它渗入子文件夹中 我们已经能够确定一些可能的原因 在存储库浏览器中移动文件夹 在 IntelliJ 中移动和 或重命名包 使用旧的 svn 客户端 任何人
  • 在azure devOps中,如何在项目中复制仪表板

    我在项目中创建了一个仪表板 并插入小部件来显示团队进度 目前 仪表板中有 2 个团队 每个团队有 8 个小部件 我想将它们分开 以便每个团队都有自己的个人仪表板 因为我不想真正从头开始制作它 所以我想复制它 然后删除其他团队在每个新的个人仪
  • FASM 是否使用 Intel 语法?

    我尝试在 FASM 中编译以下代码 mov DWORD PTR ebp 4 1234567 它给了我一个 无效表达式 错误 但是以下代码有效 mov DWORD ebp 4 1234567 那么 FASM 是否使用 Intel 语法 我假设
  • 如何使用 OOP 运行存储在容器中的实际对象的函数?

    如何使用 OOP 运行存储在容器中的实际对象的函数 背景 我正在编写一个游戏 有 4 间相连的房间 有两种不同的房间类型和两种不同的玩家类型 玩家应该作为线程运行 杀手应该在行动室中与普通玩家进行战斗 在第二种类型的房间里 不应该发生任何事
  • VBScript 条件短路解决方法

    我有一个必须维护的大型经典 ASP 应用程序 并且我多次发现自己因缺乏短路评估能力而受挫 例如 VBScript 不会让你逃脱 if not isNull Rs myField and Rs myField lt gt 0 then 因为如
  • C浮点精度[重复]

    这个问题在这里已经有答案了 可能的重复 浮点比较 https stackoverflow com questions 7011184 floating point comparison 我对 C C 中浮点数的准确性有疑问 当我执行下面的程
  • 如何使用 sprintf 附加字符串?

    我面临着一个严重的问题sprintf 假设我的代码片段是 sprintf Buffer Hello World sprintf Buffer Good Morning sprintf Buffer Good Afternoon 几百次冲刺
  • 如何给计时器添加 5 秒

    我正在尝试制作一个显示以下时间的计时器 小时 分钟 秒 毫秒 这是我的代码 var timer NSTimer var startTime NSTimeInterval func updateTime var currentTime NSD
  • 当针对 Flex 4 sdk 时,Flex builder3 不会生成 html 包装器

    在 Flex builder 3 中 当我创建一个针对 Flex 4 sdk 的新 Flex 应用程序时 它不会生成 html 包装文件 我在网上寻找答案 但没有成功 我已确保在项目属性中选中该框以生成 html 包装器 唯一的解决方法是针
  • 为 Android 构建 Valgrind

    使用 ndk r6 或 ndk r8d 在 ubuntu 12 04 上构建 valgrind 3 8 1 失败 并出现以下错误 cc1 Error not rekognized option marm priv main globals
  • VSCode 调试器附加到本地进程

    PyCharm 的一大特色是它允许其调试器附加到本地运行 以及 IDE 外部 的 python 进程 当我尝试迁移到 VSCode 以在 Python 中工作时 我很难配置启动 json模拟 PyCharm 的附加到本地进程功能 name
  • 如何强制 Angular cli 从绝对位置而不是 base-href 提供包文件

    我正在努力将使用 cli 构建的 Angular 4 项目部署到 Spring boot 服务器 In the angular cli json我添加了 outdir 属性 它指向 Spring webapp 文件夹内的自定义文件夹 可以直
  • Swagger UI 嵌套可扩展分组

    我正在使用 SwaggerUI 来记录 API 端点 目前 它们按控制器名称分组在一个长列表中 然后 您可以展开每个控制器来查看操作 一切标准 我想做的是将控制器分组到常见的可扩展组下 例如 您有一个宠物组 可以将其展开以显示猫和狗控制器
  • 如何在 Listview 绑定 Xamarin.Forms 内创建网格

    如何使用数据绑定在 ListView 内创建网格 我正在使用 Xamarin Forms 创建这个应用程序 如果我不知道需要多少行和列 如何在 ListView 绑定内动态创建网格 这是我到目前为止所拥有的
  • 如何在BehaviorSubject中设置默认值

    可能是一个菜鸟问题 如何为BehaviorSubject 设置默认值 我有一个具有 2 个不同值的枚举 enum class WidgetState HIDDEN VISIBLE 以及发出状态的行为主体 val widgetStateEmi
  • 使用 JMockit 模拟私有静态字段?

    我有一个像下面这样的课程 class ClassA private static File myDir myDir is created at some stage private static String findFile final