The same code worked perfectly with JDK 11. Switching to JDK 17 makes the test fail, since Instant.now()
returns null
.
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@Test
void mockStatic() {
final Instant instantExpected = Instant.parse("2022-03-10T10:15:30Z");
final Clock spyClock = spy(Clock.class);
when(spyClock.instant()).thenReturn(instantExpected);
try (final MockedStatic<Clock> clockMock = mockStatic(Clock.class)) {
clockMock.when(Clock::systemUTC).thenReturn(spyClock);
final Instant now = Instant.now();
assertEquals(instantExpected, now);
}
}
Running on Windows 10, Mockito 4.6.1, Eclipse Temurin 17.0.2.8