java mockito的用法_如何在Java中使用Mockito模拟新日期()

正确的做法是重构代码,使其更具可测试性,如下所示。 重组你的代码,以消除日期的直接依赖关系可以让你注入的正常运行时间和测试运行时不同的实现:

interface DateTime {

Date getDate();

}

class DateTimeImpl implements DateTime {

@Override

public Date getDate() {

return new Date();

}

}

class MyClass {

private final DateTime dateTime;

// inject your Mock DateTime when testing other wise inject DateTimeImpl

public MyClass(final DateTime dateTime) {

this.dateTime = dateTime;

}

public long getDoubleTime(){

return dateTime.getDate().getTime()*2;

}

}

public class MyClassTest {

private MyClass myClassTest;

@Before

public void setUp() {

final Date date = Mockito.mock(Date.class);

Mockito.when(date.getTime()).thenReturn(30L);

final DateTime dt = Mockito.mock(DateTime.class);

Mockito.when(dt.getDate()).thenReturn(date);

myClassTest = new MyClass(dt);

}

@Test

public void someTest() {

final long doubleTime = myClassTest.getDoubleTime();

assertEquals(60, doubleTime);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值