我试图使用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);
}
这是我有时得到的Junit输出,它表明了故障:
org.junit.ComparisonFailure:
Expected :20:43:18
Actual :20:43:20
我试过几种方法来解决这个问题,但我无法让它可靠地工作。提前感谢您的帮助。
代码示例没有显示如何初始化time.getDate
中的time
对象。
对于这个测试,您应该使用相同的种子值初始化time
和Calendar.getInstance()
,否则结果是不可预测的。