当前位置: 首页 > 知识库问答 >
问题:

模仿toURI()方法时的AssertionFailedError

简俊楚
2023-03-14

我试图从FileObject.java类模拟Touri()方法(该类属于org.openide.filesystems包)。

方法声明如下所示:

public final URI toURI() {
    // Compiled code
}

到目前为止,我有了以下测试代码:

@Test
public void test() throws Exception {
    String myUrl = "http://stackoverflow.com";
    URI myURI = new URI(myUrl);
    FileObject mocked = Mockito.mock(FileObject.class);

    Mockito.when(mocked.toURI()).thenReturn(myURI);

    assertEquals(myURI, mocked.toURI());
}

但是,当我运行测试时,它在mockito.when(mocked.touri()).thenreturn(myURI);行中崩溃,出现以下错误:

有人知道这里出了什么问题吗?

共有1个答案

沈琨
2023-03-14

这个问题的发生是因为这是一个最终的方法。

因为Mockito2.1.0可以模拟final方法/类。来自Mockito文档:

很长一段时间以来,当Mockito拒绝模拟一个最后的类时,我们的用户感到难以置信。对最终方法的嘲弄甚至更成问题,导致框架出现令人惊讶的行为,并产生愤怒的故障排除。缺乏嘲讽决赛是Mockito自2007年成立以来的一个主要限制(...)它可以通过创建文件src/test/resources/mockito-extensions/org.mockito.plugins.mockmaker来通过mockito扩展机制完成

并且mockito将能够模拟最终方法。

 类似资料:
  • 无法找出正确的方法来使用匹配器来识别我要处理的exchange方法的重载。我正在打的电话:

  • 我不知道我的代码出了什么问题,我的静态方法都不能被 Mockito 嘲笑...... 我检查了几个小时,似乎我的代码没有任何错误。 下面是依赖性: 下面是静态方法: 下面是测试类: 运行测试后,我得到了这个异常:

  • 本文向大家介绍JavaScript实现模仿桌面窗口的方法,包括了JavaScript实现模仿桌面窗口的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现模仿桌面窗口的方法。分享给大家供大家参考。具体如下: 这里使用JS模仿了桌面窗口的移动、八个方向的缩放、最小化、最大化和关闭,以及 双击缩小放大窗口、改变窗口大小的预览效果等功能。 希望本文所述对大家的javasc

  • 本文向大家介绍Android实现模仿UCweb菜单效果的方法,包括了Android实现模仿UCweb菜单效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现模仿UCweb菜单效果的方法。分享给大家供大家参考。具体如下: UCWeb的菜单看起来不错,自己模仿做一个,思路实现如下: 1、保留menu按键作用 2、用popupwindow作为菜单显示容器 3、用GridV

  • 问题内容: 编辑:我改变了一些例子,以获得想法: 喜欢 …而无需创建公共接口并为Integer和Float创建子类来实现它 如果没有,类似这样的东西可能会更有意义并且有用 如果呢?是一个通配符,为什么我们不应该限制某些类型? 问题答案: 在非常极端的情况下(没有的Java 7之前的版本),我也希望能够做到这一点。例如 不管实际的类型是什么,这都允许我打电话。换句话说,将包含所有提供的类型的“ AP

  • 我试图用Mockito 1.9.5模拟一个类,但是我很难让它工作。 我写了我的测试样板: ...并得到一个长的< code>ClassCastException: 线程“main”java.lang.ClassCastException中的异常:org.mockito.internal.creation.jmock.ClassImposterizer$ClassWithSuperclassToWo