Mockito 因无效参数名称异常而启用内联模拟而失败

2024-04-25

我已启用内联模拟 https://static.javadoc.io/org.mockito/mockito-core/2.13.0/org/mockito/Mockito.html#39这样我就可以模拟最终类,但现在使用 Junit 运行测试时出现以下异常。

当我一次运行所有测试时,只有两个测试失败,但如果我单独运行测试,那么大多数测试都会失败。

我没有使用任何 scala 或 android 类(据我所知)。我正在使用 lombok,但我尝试删除 lombok 注释,但它没有解决问题。

当删除mock-maker-inline时,问题就消失了,但我宁愿保留它。

我该如何解决这个问题?

org.mockito.exceptions.base.MockitoException: 
Mockito cannot mock this class: class com.example.MyClass.

If you're not sure why you're getting this error, please report to the mailing list.


Java               : 1.8
JVM vendor name    : Oracle Corporation
JVM vendor version : 25.112-b15
JVM name           : Java HotSpot(TM) 64-Bit Server VM
JVM version        : 1.8.0_112-b15
JVM info           : mixed mode
OS name            : Windows 10
OS version         : 10.0


You are seeing this disclaimer because Mockito is configured to create inlined mocks.
You can learn about inline mocks and their limitations under item #39 of the Mockito class javadoc.

Underlying exception : org.mockito.exceptions.base.MockitoException: Could not modify all classes [interface java.lang.AutoCloseable, class com.example.MyClass, interface java.io.Closeable, class java.lang.Object]
    at org.mockito.internal.junit.JUnitRule$1.evaluate(JUnitRule.java:42)
    at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    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:539)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)
Caused by: org.mockito.exceptions.base.MockitoException: Could not modify all classes [interface java.lang.AutoCloseable, class com.example.MyClass, interface java.io.Closeable, class java.lang.Object]
    at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:138)
    at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:346)
    at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:161)
    at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:355)
    ... 18 more
Caused by: java.lang.IllegalStateException: 
Byte Buddy could not instrument all classes within the mock's type hierarchy

This problem should never occur for javac-compiled classes. This problem has been observed for classes that are:
 - Compiled by older versions of scalac
 - Classes that are part of the Android distribution
    at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:120)
    at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClass(InlineBytecodeGenerator.java:97)
    at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$1.call(TypeCachingBytecodeGenerator.java:37)
    at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$1.call(TypeCachingBytecodeGenerator.java:34)
    at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:138)
    at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:346)
    at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:161)
    at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:355)
    at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:32)
    at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMockType(InlineByteBuddyMockMaker.java:200)
    at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMock(InlineByteBuddyMockMaker.java:181)
    at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35)
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:65)
    at org.mockito.Mockito.mock(Mockito.java:1821)
    at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:36)
    at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16)
    at org.mockito.internal.configuration.IndependentAnnotationEngine.createMockFor(IndependentAnnotationEngine.java:38)
    at org.mockito.internal.configuration.IndependentAnnotationEngine.process(IndependentAnnotationEngine.java:62)
    at org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:57)
    at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:41)
    at org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:69)
    ... 18 more
Caused by: java.lang.IllegalStateException: Error invoking java.lang.reflect.Executable#getParameters
    at net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter$Dispatcher$ForJava8CapableVm.getParameter(ParameterDescription.java:387)
    at net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter$Dispatcher$ForJava8CapableVm.isNamePresent(ParameterDescription.java:355)
    at net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter.isNamed(ParameterDescription.java:227)
    at net.bytebuddy.description.method.ParameterDescription$AbstractBase.asToken(ParameterDescription.java:147)
    at net.bytebuddy.description.method.ParameterDescription$AbstractBase.asToken(ParameterDescription.java:107)
    at net.bytebuddy.description.method.ParameterList$AbstractBase.asTokenList(ParameterList.java:80)
    at net.bytebuddy.description.method.MethodDescription$AbstractBase.asToken(MethodDescription.java:693)
    at net.bytebuddy.description.method.MethodDescription$AbstractBase.asToken(MethodDescription.java:334)
    at net.bytebuddy.description.method.MethodList$AbstractBase.asTokenList(MethodList.java:53)
    at net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory$Default$1.represent(InstrumentedType.java:223)
    at net.bytebuddy.ByteBuddy.redefine(ByteBuddy.java:698)
    at net.bytebuddy.ByteBuddy.redefine(ByteBuddy.java:676)
    at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.transform(InlineBytecodeGenerator.java:167)
    at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
    at sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
    at sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:144)
    at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:117)
    ... 38 more
Caused by: java.lang.reflect.MalformedParametersException: Invalid parameter name ""
    at java.lang.reflect.Executable.verifyParameters(Executable.java:386)
    at java.lang.reflect.Executable.privateGetParameters(Executable.java:416)
    at java.lang.reflect.Executable.getParameters(Executable.java:357)
    at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter$Dispatcher$ForJava8CapableVm.getParameter(ParameterDescription.java:383)
    ... 55 more

使用mockito-core 2.13.0和byte-buddy 1.7.9。


我通过升级到最新版本的mockito解决了这个问题。目前是:

testImplementation "org.mockito:mockito-core:2.25.1"

之后我遇到了一些构建错误,通过选择解决了这些错误

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

Mockito 因无效参数名称异常而启用内联模拟而失败 的相关文章

  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 是否可以使用 Flying Saucer (XHTML-Renderer) 将 css 解析为类路径资源?

    我正在尝试将资源打包到 jar 中 但我无法让 Flying Saucer 在类路径上找到 css 我无法轻松构建 URL 来无缝解决此问题 https stackoverflow com questions 861500 url to l
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 如何在 Spring 属性中进行算术运算?

  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO

随机推荐

  • 语音识别和语调检测

    我想做一个 iOS 应用来计算疑问句 我会寻找 WH 问题以及 我会吗 格式化问题 我对语音或音频技术领域不太了解 但我Google了一下 发现语音识别SDK很少 但仍然不知道如何检测和绘制语调 是否有支持语调或情感语音识别的 SDK 据我
  • 如何从对话框片段获取主机片段中的按钮点击

    我有一个 listFragment 我想在 listItemClick 上显示 DialogFragment 是 否 我想取回 listFragment 中的用户选择 是 否 我已经阅读了有关侦听器接口机制的信息 但它与 Activityf
  • Google Analytics 未在 Swift 中初始化

    由于某种原因 我的新 swift 应用程序没有初始化 Google Analytics 我在项目中为所有 GAnalytics 文件创建了一个桥接标头 import GAI h import GAIDictionaryBuilder h i
  • 使用 cmake 和 Visual Studio 的一个解决方案中的多个项目

    我有一个 Visual Studio 2010 解决方案 其中包含 5 个项目 两个库和三个应用程序 依赖于库 我现在想将构建系统迁移到 CMake 也能够在 Linux 下编译 我已经了解了如何为一个项目编写 CMakeLists txt
  • Java HashSet 中元素的排序

    为什么第二组和第三组保持顺序 Integer j new Integer 3 4 5 6 7 8 9 LinkedHashSet
  • 在 Homestead 中配置 php.ini

    我正在尝试更改变量最大输入变量在我的 php ini 文件中指定 How many GET POST COOKIE input variables may be accepted max input vars 2500 和跑步 sudo n
  • 有没有办法在 Visual Basic 6.0 应用程序中添加全局错误处理程序?

    VB 6 0没有任何全局处理程序 为了捕获运行时错误 我们需要在每个我们认为可能发生错误的方法中添加一个处理程序 但是 仍然有一些地方可能被遗漏 所以 我们最终会遇到运行时错误 在应用程序的所有方法中添加错误处理程序 唯一的方法吗 不 无法
  • Windows 中的 SQLAlchemy 引擎绝对路径 URL

    我正在尝试连接到 Windows 7 x64 计算机上的 python 3 3 应用程序中的 sqlite database 文件 为此 文档指出 sqlite
  • IOS Safari URL UTI 分享表

    我正在尝试使用 safari 共享按钮和共享表将当前 URL 从 safari 传递到我的应用程序 我希望它进入我的应用程序 而不是让它成为共享扩展 在 Safari 中 共享表不显示我的应用程序 我已注册以下文档类型 UTI 但未成功 p
  • Asp.NET WebApi 基于约定的方法 Url/Route 查询

    我不确定基于 ASP NET WebAPI 约定的休息服务的 最佳实践 前进方向 该服务需要返回资源的 子属性 eg UsersController public User Get int id returns named user via
  • R Markdown:openBinaryFile:不存在(没有这样的文件或目录)

    我开发了一个闪亮的应用程序 允许用户通过 R Markdown 下载 HTML 报告 我正在尝试将自定义 css 和图像包含到我的 rmarkdown 文件中 但是 我不断收到此错误消息 pandoc Could not fetch eit
  • 使用 Apache Axis2 从 WSDL 文件生成单独的 Java 文件而不是单个存根

    目前 我们使用以下命令从给定的 WSDL 文件生成单个存根 wsdl2java uri filename wsdl 这会生成一个包含所有函数调用等的单个 Java Stub 问题是这次生成的 Java Stub 的大小超过 20mb 这使得
  • 如何在symfony2中提交表单ajax?

    我即将使用 Ajax 提交我的表单 我已使用 Ajax 成功提交我的表单POST但不知道如何使用 AjaxSymfony builform builder gt add name text array constraints gt arra
  • 按定义的间隔切割

    R中有没有某种方法可以按定义的间隔进行切割而没有任何中断 例如 如果我想要精确区间 1 10 内的值 默认情况下cut将这个区间分成更小的区间 要切入预定义的间隔 您可以使用以下命令指定中断向量breaks范围 定义一些数据 x lt sa
  • iOS:在故事板中将子类从 UIView 更改为 UIScrollView

    我创建了一个基于故事板的项目 在视图控制器的视图之一中需要放置一些额外的元素 这会导致视图高度增加 使得视图现在必须是可滚动的 是否可以简单地将故事板中 UIView 的类类型更改为 UIScrollView 它真的会将顶级 UIView
  • Neo4JClient:如何创建关系?

    我看到了一篇具有相同标题的帖子 但不幸的是无法通过查看给定的示例找到解决方案 我通过以下方式创建了节点 private static void createExampleNetwork GraphClient client try Cyph
  • gcc 编译器忽略调试构建的未初始化变量警告

    gcc编译器忽略uninitialized variable warning用于调试构建 这对我来说看起来很奇怪 有人可以帮助我理解这一点吗 Program include
  • Rails-嵌套 content_tag

    我正在尝试将内容标签嵌套到自定义帮助器中 以创建如下内容 div class field div
  • Quartz 调度程序最大线程数属性

    我有以下情况 计划运行 8 个任务org quartz threadPool threadCount设置为 5 但实际上我可以看到所有 8 个任务都在运行 这怎么可能 如果我设置org quartz threadPool threadCou
  • Mockito 因无效参数名称异常而启用内联模拟而失败

    我已启用内联模拟 https static javadoc io org mockito mockito core 2 13 0 org mockito Mockito html 39这样我就可以模拟最终类 但现在使用 Junit 运行测试