美文网首页
(学习笔记)How to mock Resthighlevelc

(学习笔记)How to mock Resthighlevelc

作者: mona_alwyn | 来源:发表于2019-10-27 16:03 被阅读0次

    大概两周前,接了个补写Unit Test的任务,此事在难度在于service代码不是我写的,而且它是调用ElasticSearch API的。
    作为一个Java UT小白, 在经过一番紧急恶补之后,便操刀上手了,用上了常规的Mockito,然后得到却是更为经典的NullPointException
    在尝试各种花样之后,还是一无所获,此间操作总结起来就是:一顿操作猛如虎,定睛一眼原地杵!

    终于一番谷歌本文的标题之后,我在ElasticSearch的官网讨论区和Github Issues中得到了它们:

    通读之后得到三点信息:

    • 讨论(2)中说到,ElasticSearch的某次更新中将所有的modifiers都更改为final,而众所周知的是Mokicto并不支持finalstatic,所有mock的结果就是得到灰常经典的NullPointException。尽管ElasticSearch的维护者知晓这一状况,并有部分理解这种需求,但他们的决定是仍然维持当前状况,不会对Mockito.mock()妥协。
    • 整个(1)中的讨论、(2)中的一两个回复和(3)的前半部分,都提到了一种解决方法,就是写实现service调用ElasticSearch API的时候,自行加一层封装,这样在使用Mockito.mock()的时候只需要针对封装后的接口进行。这种方案对当时的我不太适用,因为这涉及到项目的重构工作。
    • (3)的后半部分代码示例中给出了另一个解决方案——PowerMockito,这也是我最终完成工作的方案,它支持finalstaticmock操作,它在Mockito的基础上做了更多工作,可以视为Mockito 2.0。只不过代码示例的实现我是没能跑起来的,具体使用可以看对应的官方文档,我也写了一篇比较潦草的PowerMockito实战及心得
      记录了一两个趟过的坑。

    相关文章

      网友评论

          本文标题:(学习笔记)How to mock Resthighlevelc

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