gpt4 book ai didi

java - JUnit Java 即时依赖测试

转载 作者:行者123 更新时间:2023-12-01 22:41:30 26 4
gpt4 key购买 nike

我使用 Instant.now() 获取当前 UTC 毫秒,然后将其截断为最接近的小时。我的所有 JUnit 都失败了,因为它们占用了当前的系统时间。如何使 Instant.now() 返回一个可以在 JUnit 测试中提供的固定值。

public static Long getCurrentHour() {
Instant now = Instant.now();
Instant cH = now.truncatedTo(ChronoUnit.HOURS);
return cH.toEpochMilli();
}

最佳答案

您应该模拟静态方法 Instant.now() 来为您提供静态即时值。
您可以使用 PowerMockito 来实现此目的。

@RunWith(PowerMockRunner.class)
@PrepareForTest(Instant.class)
public class TestClass {
@Mock private Instant mockInstant;

@Test
public void getCurrentHour() throws Exception {
PowerMockito.mockStatic(Instant.class);
when(Instant.now()).thenReturn(mockInstant);
when(mockInstant.truncatedTo(ChronoUnit.HOURS)).thenReturn(mockInstant);
long expectedMillis = 999l;
when(mockInstant.toEpochMilli()).thenReturn(expectedMillis);

assertEquals(expectedMillis, YourClass.getCurrentHour());
}
}

关于java - JUnit Java 即时依赖测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58491629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com