美文网首页
PowerMockRule踩坑

PowerMockRule踩坑

作者: 普通的程序员 | 来源:发表于2020-09-27 10:45 被阅读0次

进行过单测的都知道,
使用Mockito2.*版本的时候,会需要借助PowerMockito的mock static等功能。

然后又因为需要mock Android环境,就又加上了robolectric的运行器。

而恰巧这里有一个小兼容性问题。

比如我们进行单测时,

一个单测用例的生命周期是

@before ---> @Test --->@after

又因为before修饰的函数会每一次都运行,第一次运行又属其中最耗时的,

这个时候我们的解决方案往往是,提取耗时操作到 @beforeclass

@beforeClass的执行 是 早于 @before,且执行一次的。

那我们可以做一个init singleton 初始化单例的方式,在beforeClass里进行调用。

以上看似没有问题。

但是一旦加入了

@Rule
PowerMockRule

可能会出现NPE的问题。

原因是

robolectric 在运行到@beforeClass的时候,运行器的classLoader还是 AndroidSandBoxClassLoader

由于PowerMockRule的存在

会导致@before,@Test等方法,都是运行在 javaAssistClassLoader里


有兴趣的可以单步跟进

两个不同的classLoader,以至于设想的BeforeClass里init 单例的方案无法实现。

如果不需要使用robolectric ,或者不需要使用Powermock,该方案work。

相关文章

  • PowerMockRule踩坑

    进行过单测的都知道,使用Mockito2.*版本的时候,会需要借助PowerMockito的mock static...

  • JavaScrip-StepPitGuide《JavaScrip

    《JavaScript踩坑指南》JavaScrip-StepPitGuide? 《JavaScript踩坑指南》 ...

  • 算法踩坑6-二叉搜索树排序

    背景 接上面五篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 ...

  • 算法踩坑5-归并排序

    背景 接上面四篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 来...

  • D1094:踩坑的价值最大化

    是人就会踩坑,不踩坑理论上就不属于人类,踩坑是人之常情,能回头站在坑边反思,才是对踩过的的坑价值最大化的体现,要不...

  • 交互设计师所要避免的几个坑

    前言 工作中难免会踩到几个坑,即使现在不踩以后还会踩,只有踩过才会深刻记住,踩过说明爱过!但是踩过的坑必须把坑填满...

  • 踩坑,使用cocoaPods import导入时没有提示的解决办

    续上篇写的,踩坑,cocoaPods ---- framework not found Pods之后 ,又踩坑了。...

  • 2020-10-19随笔 踩坑0传值

    踩坑:当值传入0时,if条件判断时候会自己转换,记录踩坑。

  • 随笔

    读书啊,就是一个坑踩完了又掉进另一个坑,先说踩读书没用的坑,爬出来了,再踩读书要多的坑,之后再踩读书要精啊,读书要...

  • PHP中的数据类型

    一说到数据类型,这个坑就太多了,多到有哪些坑,有多少坑,不知道自己还会踩哪些坑,以及踩过的坑还会不会再踩,我对...

网友评论

      本文标题:PowerMockRule踩坑

      本文链接:https://www.haomeiwen.com/subject/supkuktx.html