【发布时间】:2016-07-01 14:35:45
【问题描述】:
如何模拟和改变时间?
我在被测方法中使用 Calendar.getInstance()
这是方法
public List<Object> chechAuth(){
Calendar from = Calendar.getInstance();
if(jobService.findJobByCheckAuth(from.getTime(), true).isEmpty()){
from.add(Calendar.YEAR, -10);
}
Calendar to = Calendar.getInstance();
to.add(Calendar.MONTH, 2);
System.out.println("from: "+from.getTime());
System.out.println("to: "+to.getTime());
return objectDAO.findAuth(from.getTime(), to.getTime());
}
当我使用日历时 = Calendar.getInstance();它返回的日期与 2016 年 7 月 2 日不同
这是我的测试课:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Calendar.class, ImpServiceTest.class})
public class ImpServiceTest {
@InjectMocks
private ImpService impService = new ImpServiceImpl();
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
Calendar now = Calendar.getInstance();
now.set(2016, Calendar.JULY, 2 ,0,0,0);
PowerMockito.mockStatic(Calendar.class);
PowerMockito.when(Calendar.getInstance()).thenReturn(now);
}
@Test
public void methodTEST() throws Exception {
Calendar from = Calendar.getInstance();
when(jobService.findJobByCheckAuth(eq(now.getTime()), eq(true))).thenReturn(new ArrayList<Job>());
impService.chechAuth();
}
这段代码打印
从:2006 年 9 月 2 日星期六 00:00:00 CEST
至:2006 年 9 月 2 日星期六 00:00:00 CEST
我希望第一个 Calendar.getInstance() 返回
2006 年 7 月 2 日星期日 00:00:00 CEST
第二个
2016 年 9 月 2 日星期五 00:00:00 CEST
一些建议?
【问题讨论】:
标签: java spring calendar powermockito