最近需要写单元测试,用的SpringBoot框架,Mockito无法对静态方法进行Mock。
参考网上很多方法,都说的是Mockito不支持静态方法的Mock,需要使用PowerMockito。
大家的方法大同小异,就引用一个比较简单的例子,来源:https://www.cnblogs.com/zhshlimi/p/8296918.html

我选择这位大哥的例子展示原因是,他引用的org.powermock和我的相同,都是1.6.5版本
我的静态方法所在的类:StrUtil.class
我的静态方法:public static String getUUID(int length)
主要的方法分两步:
第一步:在单元测试的类上加两个注解:
@RunWith(PowerMockRunner.class)
@PrepareForTest({你的静态方法类名.class})
第二步:实例化
PowerMockito.mockStatic(StrUtil.class);
PowerMockito.when(StrUtil.getUUID(30)).thenReturn(“72c90b3f1638432c847e441b4f9ca4”);

但还是一直报错,错误如下:
org.powermock.api.mockito.ClassNotPreparedException:
The class com.newland.commom.util.StrUtil not prepared for test.
To prepare this class, add class to the ‘@PrepareForTest’ annotation.
In case if you don’t use this annotation, add the annotation on class or method level.
SpringBoot单元测试遇到静态方法org.powermock.api.mockito.ClassNotPreparedException:

一直不知道为什么报错,找了、试了很多网上的办法都没有解决。
最后在一篇帖子(来源:https://www.it-swarm.dev/zh/android/%E6%A8%A1%E6%8B%9F%E6%96%B9%E6%B3%95%E8%B0%83%E7%94%A8%E4%BD%BF%E7%94%A8power-mockito-orgpowermockapimockitoclassnotpreparedexception/826669374/)的评论里有一个方法(如下图),尝试之后就完美解决了。
SpringBoot单元测试遇到静态方法org.powermock.api.mockito.ClassNotPreparedException:

解决方法:
测试类继承PowerMockTestCase即可,如下图:
SpringBoot单元测试遇到静态方法org.powermock.api.mockito.ClassNotPreparedException:

最后运行结果:
SpringBoot单元测试遇到静态方法org.powermock.api.mockito.ClassNotPreparedException:

相关文章:

  • 2022-12-23
  • 2021-12-01
  • 2021-05-01
  • 2022-01-05
  • 2021-11-26
  • 2021-05-14
  • 2021-11-25
  • 2021-06-28
猜你喜欢
  • 2022-01-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案