1

我在使用 PowerMock时遇到了模拟ZoneDateTime和(Java 8)的问题。LocalTime

我用

@RunWith(PowerMockRunner.class)
@PrepareForTest({ZonedDateTime.class, LocalTime.class, Util.class}) 

对于类和测试方法

mockStatic(ZonedDateTime.class, LocalTime.class, Util.class);

PowerMockito
    .doReturn(LocalTime.parse("23:56"))
    .when(LocalTime.class, "now");

PowerMockito
    .doReturn(ZonedDateTime.parse("2017-08-28T23:56:00Z", DateTimeFormatter.ISO_OFFSET_DATE_TIME))
    .when(ZonedDateTime.class, "now", ZoneId.of(AMERICA_CHICAGO_ZONE));

PowerMockito
    .doReturn("bombel")
    .when(Util.class, "test");

不幸的是,前两种情况不模拟静态方法。第三个,我写的“测试”被嘲笑了。

如何模拟ZonedDateTimeLocalTime

我必须确保“现在”指向特定的时间点。我不认为用另一种方法包装 ZoneDatetime.now() 是一个好主意。测试不应影响源代码。

4

0 回答 0