问题描述
我正在尝试使用powermock对时间函数进行单元测试,但是在将当前时间与系统时钟进行比较时,有时无法通过assertEquals()。预计时间为2秒。这是我的代码供参考:
@RunWith(PowerMock Runner.class)
@PrepareForTest({Calendar.class,time.class})
public class TEST {
@Test
public void testTime() {
powermockito.mockStatic(Calendar.class);
Mockito.when(Calendar.getInstance()).thenReturn(calendarInstance);
SimpleDateFormat sdf = new SimpleDateFormat(DD_DOT_MM_DOT_YYY);
assertEquals(sdf.format(calendarInstance.getTime()),time.getDate(DD_DOT_MM_DOT_YYYY)); }
}
//inside the time.getDate function
public static String getDate(String format) {
DateFormat dateFormat = new SimpleDateFormat(format);
Date date = new Date();
return dateFormat.format(date);
}
org.junit.ComparisonFailure:
Expected :20:43:18
Actual :20:43:20
我已经尝试了几种方法来解决此问题,但是我无法使其可靠地工作。谢谢您的提前帮助。
解决方法
该代码示例未显示如何初始化time
中的time.getDate
对象。
对于此测试-您应使用相同的种子值初始化time
和Calendar.getInstance()
,否则结果将不可预测。