使用mockito库模拟java中的final类[重复]

2024-02-18

我有一个最终类,它有一个我想执行特定操作的方法。因此我想创建最终类的对象。但我无法创建它,以下是我的课程。

public final class A {

     private String name;

     A(String name){
       this.name = name;
     }

     public String getName(){
       return name;
     }
}

在我的 junit 测试用例中,我想创建该类的对象,如下所示

 Class TestA{

      @Test
      public void testA(){
          A a = mock(A.class);

          when(a.getName()).then("ABC"); //on this line i am getting exception
      }
 }

我也尝试过使用 new 关键字,但不起作用。那么有没有办法创建最终类的模拟对象呢?

在我面临异常之后,

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class A
Mockito cannot mock/spy following:
  - final classes
  - anonymous classes
  - primitive types
    at com.rocket.map.resources.TestA.testA(TestA.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

尝试使用这个。

Use the @RunWith(PowerMockRunner.class) annotation at the class-level of the test case.
Use the @PrepareForTest(ClassWithFinal.class) annotation at the class-level of the test case.
Use PowerMock.createMock(ClassWithFinal.class) to create a mock object for all methods of this class (let's call it mockObject).
Use PowerMock.replay(mockObject) to change the mock object to replay mode.
Use PowerMock.verify(mockObject) to change the mock object to verify mode.

另请参考这个答案——link https://stackoverflow.com/questions/14292863/how-to-mock-a-final-class-with-mockito/40018295#40018295

And Tutorial https://github.com/powermock/powermock/wiki/mockfinal.

两者看起来都很容易实现。

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

使用mockito库模拟java中的final类[重复] 的相关文章

  • 谁能解释一下 servlet 映射吗?

    我正在尝试使用 SpringMVC 编写一个 Web 应用程序 通常我只是将一些虚构的文件扩展名映射到 Spring 的前端控制器并快乐地生活 但这次我要使用类似 REST 的 URL 没有文件扩展名 将我的上下文路径下的所有内容映射到前端
  • eclipse juno 打开时出错

    在安装 Eclipse 并正常工作一年多后 我今天打开 Eclipse Juno 并在打开工作区时收到一条错误消息 我使用的是 Windows 8 64 位 Java 64 位和 Eclipse 64 位 此后我尝试重新安装 Java 和
  • 匿名内部类显示不正确的修饰符

    据我了解 以下代码应该打印true作为输出 但是 当我运行这段代码时 它正在打印false 来自 Java 文档15 9 5 匿名类 https docs oracle com javase specs jls se8 html jls 1
  • Java 弱哈希映射 - 需要根据值的弱点而不是键来删除条目

    所以JavaWeakHashMap让我们创建一个映射 如果其键变弱 则删除该映射的条目 但是我怎样才能创建一个Map 当它的条目被删除时values地图上变弱了 我想使用映射的原因是作为全局哈希表 它根据对象的 ID 跟踪对象 ID gt
  • 按对象值分组,统计后按最大对象属性设置组键

    我设法使用 Java 8 Streams API 编写了一个解决方案 该解决方案首先按对象 Route 的值对列表进行分组 然后计算每组中的对象数量 它返回一个映射 Route gt Long 这是代码 Map
  • 如何使用 Spring Security 跨多个基于 JVM 的应用程序实现单点登录

    我目前正在尝试跨多个基于 JVM Grails Servlet 的 Web 应用程序实现单点登录解决方案 这些应用程序目前都部署在同一个 servlet 容器 当前是 Tomcat 但不想将我的解决方案仅限于 Tomcat 中 所有 Web
  • Java 中的本机方法

    我花了一些时间学习什么是 Java Native 方法以及它们是在平台相关代码 主要是 C 中实现的 但是我在哪里可以找到这些 Java 的本机实现呢 例如 Thread 类的 sleep long millis 方法是本机的 但它的实现代
  • 在 JSP 中对表单操作使用相对路径

    如何在表单操作中使用相对路径
  • 如何连接hibernate和DB2

    我正在运行一个使用 struts 和 hibernate 的应用程序 我目前正在使用 Derby 数据库 现在我必须转向 DB2 数据库 请告诉我 我必须做什么配置 休眠配置文件 我必须设置任何类路径吗 多变的 我知道 DB2 有两个 ja
  • 在 javafx 中注册鼠标处理程序,但处理程序不是内联的

    我有一个 JavaFX 应用程序变得有点大 我想保持代码的可读性 我有一个折线图 我希望内置缩放功能 该功能在单击鼠标时发生 我知道我需要向图表注册鼠标侦听器 我无法从 Oracle 示例中弄清楚什么 即如下所示 http docs ora
  • 比较和删除列表和数组java中不存在的元素

    我有一个String数组和一List
  • 如何在 Ivy 中使用不同的分类器下载多个 Maven 依赖项?

    我试图依靠Neo4j 服务器 jar http repo neo4j org content repositories snapshots org neo4j app neo4j server 1 5 SNAPSHOT neo4j serv
  • Java 中意外的负数

    import java util public class Prac9FibonacciNumbers public static void main String args int x new int 100 x 0 1 x 1 1 fo
  • 在 Java 中打开现有文件并关闭它。

    是否可以在java中打开一个文件附加数据并关闭多次 例如 psuedocode class variable declaration FileWriter writer1 new FileWriter filename fn1 writer
  • Spring Boot如何加入自定义查询

    我需要创建一个端点 该端点按州返回人口普查数据以及城市列表 我目前使用两个端点来获取此数据 目前回应 自定义查询一 censusByState id 1 code 11 name Rond nia statePopulation 18152
  • 如何将多部分文件从另一个服务发送到一个服务

    我有两个端点 api 它们是 uploadand 重定向 upload是我直接上传文件的地方 重定向是我接收文件并将其传递给上传并获取 JSON 响应的地方 upload 所以下面是我的代码 package com example impo
  • Android应用程序中的模式输入

    我想知道是否有其他替代方案可以替代 Android 上平庸的 EditText 密码输入 是否有 API 或开源代码可以集成到我的应用程序中 类似于锁屏图案解锁 Intent 可能会返回哈希值 数字 字符串或代表用户输入的模式的任何内容 我
  • 如果所有类不在同一个包中,Spring @autowired 不起作用

    我有四个包裹 com spring org Files HomeController java com spring org dao Files SubscriberDao java SubscriberDaoImpl java com s
  • RecyclerView 适配器的 Kotlin 泛型

    我正在尝试编写一个通用的 recyclerview 适配器 我找到了几个例子 然而 仍然无法弄清楚如何实现通用适配器 我写的代码是 open abstract class BaseAdapter
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器

随机推荐

  • jQuery UI 工具提示小部件自动关闭

    我如何在 1 秒后自动关闭 jQuery UI Tooltip Widget 我使用以下代码 var du 1000 document tooltip show effect slideDown delay du duration du 2
  • bson_ext gem 在 macOS 上安装失败

    我坚持安装 1 5 1 版本的 bson ext gem 我几乎尝试了在网上找到的所有内容 但没有任何帮助 我尝试重新安装ruby rvm等 我在用 RVM MacOs Catalina 10 15 6 红宝石2 6 5 捆绑安装后我得到这
  • 对于 .NET 项目,Elastic Beanstalk 和 CloudFormation 之间有什么区别? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我开发了一个 NET MVC 应用程序 并开始使用 AWS 并通过 Visual Studio Tool
  • EMR 与 AWS 上的 EC2/Hadoop

    我知道 EC2 比 EMR 更灵活 但工作量更大 然而就成本而言 如果使用 EC2 可能需要将 EBS 卷附加到 EC2 实例 而 AWS 只是从 S3 流入数据 因此 在 AWS 计算器上计算数字 即使对于 EMR 也必须为 EC2 付费
  • git 从合并中删除提交

    我有以下问题 我试图将远程分支合并到本地 然后将更改推送到存储库 好吧 我获取了具有三个提交的远程分支 但其中一个尚未完成 所以我不想推送一个这些提交到存储库 当我运行 git log 时 它向我显示以下内容 commit A1 merge
  • 是否可以在 MVC 5 控制器中的一项操作上禁用身份验证过滤器?

    AuthenticateUser public class HomeController Controller GET Home public ActionResult Index return View AllowAnonymous pu
  • Keras 中的反向传播?

    谁能告诉我 Keras 中的反向传播是如何完成的 我读到它在 Torch 中非常简单 在 Caffe 中很复杂 但我找不到任何关于使用 Keras 执行此操作的信息 我正在 Keras 中实现我自己的层 非常初学者 并且想知道如何进行反向传
  • C# 可序列化类到 xsd

    有没有办法从可序列化的 C 类输出 xml 模式 xsd 我浏览过网络 但不确定我是否在寻找正确的东西 Thanks 您正在寻找 XSD exehttp msdn microsoft com en us library x6c1kb0s a
  • Play Protect 无法识别该应用程序的开发者

    我尝试在 Google Play 以外的市场中发布我的应用程序 当我尝试安装我的应用程序时 它说 Play Protect 无法识别该应用程序的开发者 来自未知开发者的应用程序有时可能不安全 我认为问题可能出在应用程序的标志上 我通过另一个
  • IntelliJ 无法将爆炸战争部署到 tomcat

    我有一个 Java Web 应用程序 正在 IntelliJ 中开发并使用 Apache Tomcat 进行部署 我定义了一些在团队中的每个人之间共享的运行配置 这些运行配置被定义为将分解的战争工件部署到本地 tomcat 中 其他团队成员
  • 如何从检测意图 API 触发对话流事件?

    如何从 python 检测意图 API 触发对话流中的事件 我想在启动聊天窗口时立即触发欢迎意图 您需要将 WELCOME 事件作为查询输入的一部分发送到调用detect intent 它可能看起来像这样 import dialogflow
  • 在应用程序购买沙箱中不提示我输入登录/密码

    我们正在开发一款应用程序 当然 用于应用程序购买 IAP 我已完成指南中启用 iap 的所有操作 一切正常 直到我想购买 一些代码 MainViewController m void viewDidLoad if SKPaymentQueu
  • 将 JTable 放入 JTree 中

    与螺纹有关Jtable 作为 Jtree 节点 https stackoverflow com questions 8839025 jtable as a jtree node我把 JTable 放到 JTree 中 但是JTree视图在启
  • 无法解析缺少分钟的日期?

    我正在尝试解析不包含分钟 2019 10 12T07Z 的日期时间字符串 import java time OffsetDateTime import java time format DateTimeFormatter public cl
  • 从触发器下载delphi中的文件并捕获文件名

    我有一个网站的网址 它看起来像这样 http www example com downloads file 4789 download http www example com downloads file 4789 download 我想
  • shouldOverrideUrlLoading 仅在某些网页上被调用

    我正在为针对多个客户端进行个性化的应用程序使用 shouldOverrideUrlLoading 方法 每个客户端都有自己的网页想要加载到 webview 中 我的问题是这样的 该应用程序非常适合客户 A 及其网页 但不适用于客户 B 的网
  • django-admin startproject尝试创建manage.py两次?

    我正在努力解决Django 教程 https docs djangoproject com en 1 9 intro tutorial01 版本 1 9 在 Ubuntu 15 10 上运行 当我到达跑步的台阶时django admin s
  • Express.js 无法 GET /index.html.var

    所以我在共享主机 FastComet 中运行一个快速应用程序 但如果我想访问 我会收到此消息 无法获取 index html var 显然这与 htaccess file 我解决这个问题的方法是添加 DirectoryIndex disab
  • 删除 iOS 7 中的 Tab Bar 水平分隔符

    我想删除 UITabBar 和屏幕其余部分之间的水平分隔线 我问和这个人有同样的问题 https stackoverflow com q 11104796 1224741但针对 iOS7 进行了更新 设置我的 UITabBar 的背景图像并
  • 使用mockito库模拟java中的final类[重复]

    这个问题在这里已经有答案了 我有一个最终类 它有一个我想执行特定操作的方法 因此我想创建最终类的对象 但我无法创建它 以下是我的课程 public final class A private String name A String nam