Mockito Spy 调用被监视类的实际方法,而不是返回硬编码的模拟

2024-01-17

这是我的间谍声明

OAuthService oAuthServiceMock = Mockito.mock(OAuthService.class);
     Mockito.doReturn(oAuthServiceMock).when(inviteServiceSpy.buildOAuthService(RESOURCE_URL, CONSUMER_KEY, CONSUMER_SECRET));

这是实际类中的方法

  public OAuthService buildOAuthService(String RESOURCE_URL, String CONSUMER_KEY, String CONSUMER_SECRET) {
        return new ServiceBuilder()
                .provider(new DummyOAuth1ApiProvider(RESOURCE_URL))
                .apiKey(CONSUMER_KEY)
                .apiSecret(CONSUMER_SECRET)
                .signatureType(SignatureType.Header).debug().build();
    }

这是我的测试用例的片段和实际间谍类的实例化(包含上述方法) 设置:

//This is in Setup/@Before method
myServiceSpy = Mockito.spy(new myServiceImpl());

测试用例:

 @Test
    public void testGetmyInviteData() throws Exception {
       assertNotNull(myServiceSpy.getmyInviteData(signup_token,CONSUMER_KEY,CONSUMER_SECRET,RESOURCE_URL, RESOURCE_URL));
    }

问题在于,间谍程序没有返回模拟对象,而是实际调用的方法似乎抛出了空指针异常。这是我运行此测试时遇到的异常。关于我可能做错了什么以及如何改进并避免调用实际方法有什么想法吗?

java.lang.NullPointerException
    at org.mycompany.myapp.service.MyServiceImplTest.testGetMyInviteData(MyServiceImplTest.java:143)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

您的模拟陈述不正确。它应该是 http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#12:

doReturn(oAuthServiceMock).when(inviteServiceSpy).buildOAuthService(RESOURCE_URL, CONSUMER_KEY, CONSUMER_SECRET);

您的代码中发生的情况是buildOAuthService真的被调用了,这会导致你的异常。

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

Mockito Spy 调用被监视类的实际方法,而不是返回硬编码的模拟 的相关文章

  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Java:使用 HttpURLConnection 的 HTTP PUT

    如何执行 HTTP PUT 我正在使用的类似乎认为它正在执行 PUT 但端点将其视为我执行了 GET 我做错了什么吗 URL url new URL https HttpURLConnection conn HttpURLConnectio
  • 将 SoapUI 与 JUnit 集成

    我正在尝试将 SoapUI 集成到我预先存在的 JUnit 测试中 我在 SoapUI 3 6 1 中创建了一个测试 有用 我的下一步是将其应用到我的开发环境中 在我的 Eclipse 项目中 我已将 jar 添加到我的类路径中 我还创建了
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi

随机推荐

  • 浮点数在CPU内部是如何存储的?

    我是一名初学者 正在学习组装基础知识 现在 我在读这件事的时候 来到了这一段 它解释了浮点数如何存储在内存中 浮点数的指数是一个 8 位字段 允许大量或 要存储的小数 指数被解释为正数或 消极的 实际指数是 8 位字段的值减去 127 12
  • 在 python 中滚动 idxmax() ?

    我有一个 python DataFrame 其中包含一些财务数据 我正在尝试为其创建一些技术指标 我试图弄清楚如何使用移动窗口函数来加速该过程 而不是逐个元素地进行 对于每个索引 我想返回过去 30 天的最大索引 我已经实现了一个逐个元素的
  • 将列类型更改为tinyInteger

    尝试在 Laravel 5 2 迁移中将数据列类型更改为tinyInteger
  • Visual Studio 探查器输出

    我写了一个执行的小类Main 依次执行A 我预计Main 方法本身位于堆栈调用的根部 因为它是我的应用程序中最顶层的函数 所做的一切都应该执行by Main 我编写了以下代码来测试 namespace ProfilerTest class
  • 需要裁剪+调整大小约 300000 个文件。运行时间 = 4 天以上。如何加快 bash 脚本的速度?

    我正在努力创建视频间隔拍摄 我拍摄的所有照片都是以 4 3 宽高比拍摄的 jpg 图像 2592x1944 分辨率 我希望它们在 1920x1080 下均为 16 9 我写了一个小脚本来执行此操作 但过程不是很快 我花了大约 17 分钟来裁
  • 在 Xcode 4 GM 中,如何打开 LLDB?我看到的都是GDB

    在方案运行调试器弹出窗口中 它显示的只是 None 和 GDB 这是针对使用 LLVM 构建的 iPad 4 2 模拟器 你不能 用苹果员工的话说 LLDB 尚不可用于 iOS 开发 https devforums apple com me
  • 共享 php 会话

    我最近遇到了一个问题 我一直在尝试解决它 但没有运气 我试图使用 GlusterFS 在所有服务器上的多个服务器 php apache 级别上共享 php 会话 但是 尽管该会话在所有服务器上都可以访问 但一旦我访问不同的服务器 会话就不会
  • Rails 中的 session 是方法还是哈希?有点困惑

    有一个非常简单的问题 我正在做 Michael Hartl 的 Railstutorial 它讨论了使用会话方法 借助 Rails 定义的 session 方法 用户登录很简单 我们可以将 session 视为一个散列 并按如下方式分配给它
  • git log --follow,gitpython 方式

    我正在尝试访问单个文件的提交历史记录 如下所示 git log follow
  • 如何将浮点数转换为分数?

    这是一个家庭作业问题 我想编写一个函数将浮点数转换为一对整数 分子和分母 例如 float 0 5 应转换为 1 2 我正在尝试 见下文 但坦率地说 它对我来说看起来不太好 f is the input float int n 1 whil
  • 我在将列表列表放入单个列表时遇到问题

    我正在编写一个解决方案 使用递归计算列表中数字之间的距离 但一直在努力获得预期的输出 我试图将列表列表放入单个列表中 但尝试使用 flatten 和append 2 不起作用 我已经尝试了几个小时 并且一直在兜圈子 有人可以告诉我我做错了什
  • 禁用 html5 视频自动播放

    如何禁用 html5 视频自动播放 我尝试过的
  • dropzone.js ...重新排队拒绝的文件...尝试将 github 答案实现到我的脚本中

    提交表单时 如果任何表单字段 例如标题 中存在错误 则用户必须重新上传文件 我正在尝试将此代码实现到我的脚本中来解决此问题 但它不起作用 https github com enyo dropzone issues 717 Dropzone
  • 倒计时器

    尝试在 Microsoft Visual Studio 上用 C 做一个倒计时器 最小值 10 秒 最大值 2 小时 计时器用完时需要显示 我该如何实现这个 谢谢 Use System Threading Timer http msdn m
  • R 无法识别命令行选项。 (警告:未知选项“-d”)

    我正在尝试使用 gdb 以与视频中指定的方式相同的方式调试 R 包中的编译代码 https vimeo com 11937905 https vimeo com 11937905 and 编写 R 扩展 https cran r proje
  • TouchEvent 同时执行 if 和 else 部分

    在下面的代码中 我面临的问题是在 onTouchListener 方法中 if 和 else 部分每次都会被执行 任何人都知道为什么会发生这样的事情 我的项目的目标是在网络视图上任何地方的触摸事件上 停靠布局必须出现在另一次触摸上 它必须消
  • Linq 递归和

    我有以下数据结构 List
  • Hadoop 2.x——如何配置辅助名称节点?

    我有一个旧的 Hadoop 安装 我希望将其更新到 Hadoop 2 旧的设置 我有一个 HADOOP HOME conf masters 文件 指定 辅助名称节点 浏览 Hadoop 2 文档 我找不到任何提及 masters 文件 或者
  • python graph-tool中的显式顶点位置

    我正在使用 python 图形工具 为了绘制图表 它使用graph draw功能 http projects skewed de graph tool doc draw html 我想将顶点位置显式发送到点引擎 事实证明我可以传递一个名为p
  • Mockito Spy 调用被监视类的实际方法,而不是返回硬编码的模拟

    这是我的间谍声明 OAuthService oAuthServiceMock Mockito mock OAuthService class Mockito doReturn oAuthServiceMock when inviteServ