Mah*_*leh 0 java junit unit-testing mocking mockito
我正在使用 mockito 并且我有一个自定义日期类,我希望能够在我的测试类中模拟这个日期类,所以我尝试了以下操作:
MVDate date = Mockito.mock(MYDate.class);
Mockito.when(date.get(Calendar.MONTH)).thenReturn(5);
Run Code Online (Sandbox Code Playgroud)
MYDate 类:
public class MYDate extends GregorianCalendar implements Comparable<Calendar> {
public MYDate() {
setTime(new Date());
}
}
Run Code Online (Sandbox Code Playgroud)
但是在尝试打印时new MYDate();它总是打印当前日期。请告知我应该如何模拟日历类,以便我可以在特定日期测试所有创建新数据实例的方法。
请注意:我在 2013 年写了这个答案。现在情况有所不同。Basil Bourque 的回答是正确的。
我会使用 Factory 类来创建Date对象,而不是使用new Date(). 有第二个构造函数用于MyDate传递工厂。然后使用工厂的模拟,您可以将其设置为返回您喜欢的任何日期。
public class DateFactory{
public Date makeDate(){
return new Date();
}
}
-----------------------------------
public class MyDate extends GregorianCalendar implements Comparable<Calendar>{
public MyDate(){
this(new DateFactory());
}
MyDate(DateFactory factory){
setTime(factory.makeDate());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2994 次 |
| 最近记录: |