使用PowerMock进行单元测试,比较秒数时存在精度问题



我试图使用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对象。

对于这个测试,您应该使用相同的种子值初始化timeCalendar.getInstance(),否则结果是不可预测的。

最新更新