如何模拟ZonedDateTime和LocalTime?

时间:2017-12-18 13:58:27

标签: java java-8 powermock localtime zoneddatetime

我在使用PowerMock模拟ZoneDateTimeLocalTime(Java 8)时遇到了问题。

我用

@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()是个好主意。测试不应对源代码产生影响。

0 个答案:

没有答案