jmockit使用(一) —— mock 系统时间

          一、mock工具被广泛的应用于单测中,尤其是当测试环境系统依赖的外部项较多,而且不受控制时。

          jmockit一般有2种方式:

          一种是基于行为的方式,使用者在单测类中写 Expectations {{}}, 里面放置“预期”会被执行的代码段和返回,这就是一种“黑盒测试”

         另一种是基于状态的方式,就是直接去重写想要mock的类中的方法,这是一种“白盒测试”,对于开发者来说,这种方式更简单有效


          二、首先介绍下对于java系统类System的mock, 比如mock系统时间,常用的new Date()调用的还是System.currentTimeMillis()方法,mock这个就行

public class MockSystem extends MockUp<System> {
    /**
     * mock系统时间
     * 
     * @return 自定义的系统时间
     */
    @Mock
    public long currentTimeMillis() {
        return this.nowTime;
    }

    /**
     * 系统时间
     */
    Long nowTime;

    /**
     * 让调用方自定义系统时间
     * 
     * @param nowTime 自定义系统时间
     */
    public void setNowTime(Long nowTime) {
        this.nowTime = nowTime;
    }
}

          代码中自定义了一个类,来继承System类,主要要写成:
自定义类  extends MockUp<需要被mock的类>

          然后,重写currentTimeMillis()这个方法,返回系统变量nowTime, 具体的时间可以在单测中使用时自己设置

          

          三、在任何一个单测中,如果要mock 系统时间,就在自己的单测执行之前,new 一个mock类就行,如下:

// mock 系统时间        
MockSystem system = new MockSystem();
system.setNowTime(1415116800000L);
// 自己的单测执行
myUnitTest();


          

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值