2025年mockito 静态方法(mockito 静态方法donothing)

mockito 静态方法(mockito 静态方法donothing)mockito 库并不能 mock 静态方法 需要依赖 powermock 包括静态方法测试 私有方法测试等 以及方法执行的坑或者模拟不成功解决 依赖 这个很重要 不同版本用法也有点区别 接下来就是 mock 测试了 使用完全模拟测试过程 对于需要测试接口中调用的静态 私有方法等 返回自己想要的预期结果 达到测试效果 这里有几个要点 测试过程中完全手动 mock 不会真实调用或者产生数据 一

大家好,我是讯享网,很高兴认识大家。



mockito库并不能mock静态方法,需要依赖powermock

包括静态方法测试,私有方法测试等,以及方法执行的坑或者模拟不成功解决

依赖:这个很重要,不同版本用法也有点区别:

接下来就是mock测试了,使用完全模拟测试过程,对于需要测试接口中调用的静态,私有方法等,返回自己想要的预期结果,达到测试效果:

这里有几个要点:

测试过程中完全手动mock,不会真实调用或者产生数据

一 mock对象

二 属性注入

将service等类中需要的其他service或者mapper等mock出来,然后分别使用工具类注入,名称保持一致即可

三 静态方法mock

模拟静态方法返回结果需要使用PowerMockit,测试类上必须加注解@PrepareForTest

四 私有方法

私有方法首先需要在类上加入注解,对于要测试的类中的public方法同样有效,比如测试方法中包含一个public方法,可以同样模拟:

然后对象不能mock,必须new一个,并且需要用spy处理:


讯享网

接着使用doreturn .when这种形式模式,不能使用先when后return这种,会报错

注意一点,模拟参数要么全部模拟,要么全部自定义,不能混搭

这里有个大坑,如果出现私有方法还是进去执行的情况,很大可能是参数不对,比如你mock的参数是 anyString(),那么你真是测试时候传递的必须是一个String实例,不能是null,否则mock就会失败,我这里之前一直是对象的一个属性,直接new了一个对象传递

所以一直不成功:

比如 方法需要的是user.getId() ,而且你mock的是一个anyInt(),那么真正传递的时候必须给这个user,setId(9527),否则就无法达成预期的模拟效果,所有方法都一样!!

五 预期结果

verify :判断方法执行了几次: 确定测试是否通过

例如:verify(userService, times(1)).queryUser(any(anyInt(),anyString(),anyString());

1 依赖

2 创建测试基类

3 创建特定的测试类

4 模拟私有方法和静态方法

注意:

如果是分模块项目,springboot项目的启动类只能有一个,即需要把其他service,dao,common模块的启动类的启动注解给注释掉,否则测试启动会报错

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

小讯
上一篇 2025-06-09 12:15
下一篇 2025-05-16 07:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/169740.html