单元测试JMockit使用


声明:本文转载自https://my.oschina.net/qixiaobo025/blog/1540545,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

背景

  1. 由于目前dubbo等外部依赖越来越多 现在小伙伴关于测试经常跑不通 比如
  2. 之前也提供了stub方案,但是目前使用的人几乎没有junit测试之第三方组件mock 
    文章中提到让大家学习使用jMockit 似乎也没有人响应

 

使用

  1. 场景需要返回特殊的值(特定异常特定值 非法值等等就OK)

    @Test public void testJmockit(){     List mockInstance = new MockUp<List>() {         @Mock         public String get                 (int index) {             return "aaaa";         }     }.getMockInstance();     Assert.assertEquals(  mockInstance.get(1),"aaaa");     Assert.assertEquals(  mockInstance.get(Integer.MAX_VALUE),"aaaa");     Assert.assertEquals(  mockInstance.size(),0); }

     

  2. 注意此处为接口 调用了getMockInstance 非常神奇的返回了指定的值 并且模拟出了一种size为0但是get一直可以返回特定结果的情况

  3. 使用spring注解部分依赖特定的外部服务(此处需要依赖网络)

      @Test     public void testJmockitHttpClient(){         new MockUp<CarZoneHttpClient>() {             @Mock             public  String getJsonString(String requestJsonStr, String requestUrl){ return"我是mocked!";             };         };         Assert.assertEquals(  CarZoneHttpClient.getJsonString("",""),"我是mocked!");     } 

     

  4. 很明显这样就可以直接返回了需要的值

     

  5. 部分依赖dubbo接口

    new MockUp<CustomerCarServiceImpl>(){     @Mock     CustomerCarVO synchronizedCustomerCar(CustomerCarVO customerCarVO, int type, boolean notNull) throws UnsupportedEncodingException {       return customerCarVO;     }   };

     

  6. 此处业务逻辑可以强行跳过 这样可以不必要依赖指定接口(dubbo,rmi)也可以制造空指针等测试代码异常
    严格来说基本上MockUp可以完成绝大部分我能想到的测试场景了~

  7.  

    猜猜这是咋实现的~ 下一篇分解

本文发表于2017年09月21日 00:37
(c)注:本文转载自https://my.oschina.net/qixiaobo025/blog/1540545,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2302 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1