springboot项目添加powermock遇到的StackTraceCleanerProvider问题

Java运行时错误处理:AbstractMethodError解决方案 是Java运行时错误的一种,当程序尝试调用一个抽象方法时,如果抽象方法没有在相应的类中被实现,则会抛出此异常。这通常意味着类路径中有不一致的类版本,导致JVM无法正确解析抽象方法的实现。一个常见的案例是,当项目从Xerces-J 2.x升级到3.x时,可能会因为方法签名的变更导致运行时错误。例如,一个在2.x版本中正常工作的代码片段,调用了SAXParser的parse方法:在3.x版本中,如果SAXParser的实例化方式未变更,上述代码可能会引发,因为SAXParser。 阅读详情

一、问题背景

给spring boot项目添加powermock组件,解决单测mock问题。

  1. 添加如下powermock依赖
    <!-- powermock utils -->
         <dependency>
             <groupId>org.javassist</groupId>
             <artifactId>javassist</artifactId>
             <version>3.20.0-GA</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.powermock</groupId>
             <artifactId>powermock-module-junit4</artifactId>
             <version>${powermock.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.powermock</groupId>
             <artifactId>powermock-api-mockito</artifactId>
             <version>${powermock.version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
    
  2. 用框架生成一个简单单测
  3. 然后给单测类增加Mock对象、InjectMock对象
  4. mock DAO函数调用
    @RunWith(PowerMockRunner.class)
    @PowerMockIgnore({"javax.management.*", "org.apache.http.conn.ssl.", "javax.net.ssl." , "javax.crypto.*"})
    public class SomeServiceImplTest {
        @Mock
        private SomeDAO someDAO;
        
        @InjectMocks
        private SomeServiceImpl someServiceImpl;
        
        @Test
        public void callSomeMethod() {
            PowerMockito.when(someDAO.insertSelective(any())).thenReturn(1);
            ...
            assertTrue(someServiceImpl.callSomeMethod() == null);
         }
     }
    
  5. 运行单测,报如下错误
    java.lang.AbstractMethodError: org.powermock.api.mockito.internal.exceptions.StackTraceCleanerProvider$1.isIn(Ljava/lang/StackTraceElement;)Z
    
    这个是any()函数导致的报错。

二、问题原因探寻

找寻any函数是哪里的, 发现是mockito-core中的,怀疑是jar包依赖冲突导致的报错,修改jar包依赖如下:

  1. 排除powermock-module-junit4中的mockito-core
  2. 排除powermock-api-mockito中的mockito-core
  3. 排除spring-boot-starter-test中的mockito-core
  4. 新增如下mockito-all依赖
    <dependency>
     <groupId>org.mockito</groupId>
     <artifactId>mockito-all</artifactId>
     <version>1.10.19</version>
     <scope>test</scope>
    </dependency>
    

三、问题解决

用mockito-all-1.10.19.jar里面的org.mockito.Matchers中的anyObject函数,单测可以执行成功。

@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.management.*", "org.apache.http.conn.ssl.", "javax.net.ssl." , "javax.crypto.*"})
public class SomeServiceImplTest {
    @Mock
    private SomeDAO someDAO;
    
    @InjectMocks
    private SomeServiceImpl someServiceImpl;
    
    @Test
    public void callSomeMethod() {
        PowerMockito.when(someDAO.insertSelective(anyObject())).thenReturn(1);
        ...
        assertTrue(someServiceImpl.callSomeMethod() == null);
    }
}
目标检测YOLO实战应用案例100讲-基于激光雷达点云的三维目标检测算法研究 近几年来,在计算机视觉领域,利用深度学习卷积神经网络技术来实现各种任务的算法越来越多。毫米波雷达、相机、激光雷达、超声波雷达等车载传感器生产成本的降低,汽车的自动驾驶技术得到了飞速发展,在我们的日常生活中经常能看到该技术辅助汽车驾驶员进行行车。和非自动驾驶汽车相比,自动驾驶汽车存在诸多优点,如进一步减少交通事故,保障人身安全;提供安全合理的路线,避免交通拥堵;采用清洁无污染的电能作为汽车新能源,从而降低大气污染等。现如今,自动驾驶技术已经逐渐深入到各个领域并发挥着关键的作用。 阅读详情

相关推荐

告别卡顿!手把手教你用北鲲云超算平台图形化提交COMSOL仿真任务(附RDP连接技巧)

本文详细介绍了如何利用北鲲云超算平台图形化提交COMSOL仿真任务,解决本地计算资源不足导致的卡顿问题。通过云端高性能计算,用户可轻松配置多核CPU和大内存资源,实现高效仿真计算,并附有RDP连接优化技巧,提升远程操作体验。

weixin_42519781的博客 380

java.lang.AbstractMethodError: org.powermock.api.mockito.internal.mockmaker.PowerMockMaker.isTypeMoc...

【转】https://stackoverflow.com/questions/53539930/java-lang-abstractmethoderror-org-powermock-api-mockito-internal-mockmaker-powe The following github links helped in fixing the issue up, a...

weixin_30920853的博客 2409

C# 调用halcon中visualize_object_model_3d显示点云

3.1 判断线程是否为空,如果为空,则新创建,如果不为空,则中断线程,清空窗口后再次执行创建操作3.2 创建:调用show()方法实例化显示类的对象,传入显示参数,将线程testvisual 绑定 在 类对象的action方法上(此处action方法内部,只调用了visualize_object_model_3d算子)3.3 启动线程。

weixin_42362219的博客 1403

Mockito和PowerMockito的兼容

Mockito和PowerMockito的兼容 我的spring Boot是2.1.16RELEASE版本的,mockito是2.23.4版本的(这个版本的mockito去找相应的powerMockito有点尴尬,啥也不是),junit是4.12版本的,直接复制百度与junit相应版本的powerMockito的依赖(如下)会报错:java.lang.NoClassDefFoundError: org/mockito/cglib/proxy/Enhancer。 <!--powerMockito--&g

liangyum的博客 5977

晶振匹配电容容值计算方法

在使用晶振时,应仔细参考晶振规格书,以确保正确选择匹配电容,从而获得稳定和精准的时钟源。

aidi1111的博客 4653

28377D Bootloader

架构

a6100309120的博客 6012

PowerMock与Mockito使用教程

简介 Mockito无法实现对静态函数、构造函数、私有函数、Final 等函数的模拟,PowerMock是一个Java模拟框架,可用于解决通常被认为很难甚至无法测试的测试问题。 使用PowerMock,可以模拟静态方法,删除静态初始化程序,允许模拟而不依赖注入等等。 PowerMock通过在执行测试时在运行时修改字节代码来完成这些技巧。 本文主要是介绍PowerMock 在 Mockito ...

jacklife的博客 1万+

利用 Python 构建高效爬虫爬取国家标准文献——从基础到进阶

然而,由于许多标准文献需要从特定网站获取,手动下载既耗时又低效,因此构建自动化爬虫成为一种实用且高效的解决方案。本文从技术选型、网站分析、代码实现到反爬优化,全面讲解了如何爬取国家标准文献。国家标准文献(National Standards Literature)是国家对各领域统一规范的文件,涵盖了技术参数、测试方法、生产工艺等内容。因此,通过自动化爬虫技术进行文献爬取和管理,不仅能解放劳动力,还可以提高数据管理效率。在构建爬虫前,我们需要对目标网站进行分析,包括页面结构、请求方式以及可能的反爬机制。

2201_76125261的博客 2105

PowerMockito实战

单元测试 一、依赖 <!-- powermock 相关依赖 --> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>1.7.4</version> <scope>test</scope> </d

qq_245375716的博客 2170

paddlehub无法安装,安装报错【Bug完美解决】

paddlehub无法安装,安装报错【Bug完美解决】 我们正在进行一个基于Python的项目开发,该项目需要集成PaddleHub,以利用其丰富的深度学习模型和工具。PaddleHub提供了一种简便的方式来使用预训练模型,以加速开发过程并提高模型效果。 现在paddlehub安装出现问题了,本文彻底解决paddlehub无法安装的问题。

一键难忘的博客 3388

DeerFlow 系列教程 第十八篇 | 实战案例三——用 DeerFlow 构建自定义 AI 工作流

在实际业务中,许多复杂的内容生产任务不是单一技能就能覆盖的。需要先调研某个主题的最新信息基于调研结果撰写结构化的文章或报告对报告中的数据进行可视化处理最终输出符合品牌风格的排版文档或演示文稿这些环节涉及不同的领域知识和工具链,单个内置技能无法完全覆盖。组合自定义技能、MCP 外部工具和多 Agent 协作,构建端到端的工作流。传统手工流程: DeerFlow 自定义工作流:搜索资料、阅读文献 用户描述需求│ │▼ ▼。

weixin_43674738的博客 204

已解决 java.lang.AbstractMethodError异常的正确解决方法,亲测有效嘿嘿嘿

`java.lang.AbstractMethodError` 异常通常意味着在尝试调用一个抽象方法时,JVM发现该方法在运行时类中没有具体的实现。在你给出的例子中,`org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout` 方法被调用了,但这个方法没有在运行时类中找到实现。 ### 原因分析 出现这个异常的原因可能有多种,但通常与以下情况相关: 1. **版本不兼容**:MyBatis 和 MyBatis-Spring 之

PythonAigc的博客 3821

linux v3h平台开发系列详解(GMSL摄像头篇):1.11 解串器MIPI 1.5G高速率特殊deskew配置

解串器max96712 deskew配置

xian18809311584的博客 1775

Springboot 全局异常处理

最近在做项目时需要对异常进行全局统一处理,主要是一些分类入库以及记录日志等,因为项目是基于Springboot的,所以去网络上找了一些博客文档,然后再结合项目本身的一些特殊需求做了些许改造,现在记录下来便于以后查看。 在网络上找到关于Springboot全局异常统一处理的文档博客主要是两种方案: 1、基于@ControllerAdvice注解的Controller层的全局异常统一处理 以下是...

jswd_50x的博客 637

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Mockito+PowerMock单元测试常见问题与解决方案

单测所在的类需要放在test包下和被测类同目录层级下,如被测类DtsAccountService放在src/main/java 目录com.qiguliuxing.dts.db.service下,那么测试类DtsAccountServiceTest需要相应放在src/test/java 目录com.qiguliuxing.dts.db.service下.我亦无他,唯手熟尔。调整对mock方法的入参,要么同时用真实值,要么同时用模拟值,如Mockito.anyInt()、Mockito.anyLong()…

weixin_51360020的博客 3084

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java.lang.AbstractMethodError 启动过滤器异常解决过程

java.lang.AbstractMethodError 启动过滤器异常解决过程

ymmyym的博客 3855

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

powermock 入门介绍及使用示例

文章转自:https://blog.csdn.net/xiaoxufox/article/details/78562656 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </depend

yangyangrenren的专栏 3338

报错解决:java.lang.AbstractMethodError: io.restassured.internal.RequestSpecificationImpl.invokeMethod

问题描述:使用rest-assured框架时,运行报错java.lang.AbstractMethodError: io.restassured.internal.RequestSpecificationImpl.invokeMethod 环境:maven项目,testng-restassured,jdk1.8 解决思路 首先查看jdk1.8文档找到了AbstractMethodError的原因 public class AbstractMethodError extends Incompa..

m0_49516427的博客 1091

【错误解决】java.lang.AbstractMethordError:org.springframework.boot.test.mock.web.SpringBootMockServletCon

报错:java.lang.AbstractMethordError:org.springframework.boot.test.mock.web.SpringBootMockServletContextPath()Ljava/lang/String;spring-test和spring-mock这俩jar包下面有一个相同路径相同类名的类MockServletContext。spring-test在单元测试启动的时候调用到了spring-mock下面的类导致报错。排除掉spring-mock包就好。

名猿陈大浏的博客 417

Springboot统一异常处理返回

Springboot统一异常处理返回

L1481333167的博客 709

Junit 与 powermock 结合执行过程源码阅读

还是根据执行过程powermock 报错的日志分析: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAc

lxlmycsdnfree的博客 397

robolectric android studio,Android Studio 3.6.3/4.0/4.1/4.2配置Robolectric-4.5.1,Powermock-1.6.6单元测试环境...

基础配置以及常见错误目前版本的Android Studio 3.6.3/4.0/4.1/4.2使用最新的Robolectric-4.5.1,只能配合Powermock-1.6.6,不能高于这个版本PowerMock, 尽管软件源中的版本已经更新升级到2.0.7版本了,但是Robolectric并没有及时更新依赖。尝试过使用最新版本的PowerMock,结果很多莫名的报错。build.gradleV...

weixin_34246656的博客 1123

reflect

一、       Introduction Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 反射机制作用的对象是类。需要了解java中类的加载。在java中,当程序需要使用某个类时,如果该类还没有加载到内存中,则系统会通过加载、连接和初始化来...

HelloWorld 307

powermock静态类_使用Powermock和mockito测试静态方法

实例:package com.bijian.study;import static org.junit.Assert.assertEquals;import java.io.IOException;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.powermock.ap...

weixin_36204513的博客 1022

为什么java连接数据库失败,请问怎么解决

Caused by: java.net.UnknownHostException: 不知道这样的主机。

m0_65144853的博客 489

powermock 警告 WARNING: An illegal reflective access operation has occurred

powermock 警告:发生了非法的反射访问操作的处理。 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.powermock.reflect.internal.WhiteboxImpl。

白衣若尘的博客 1604
上一篇: linux常用命令备份
下一篇: rust安装nightly build版本
一装到底
博客等级 码龄18年 13粉丝 26原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值