mockito怎么mock当前系统时间
时间: 2023-09-09 20:08:13 浏览: 379
输出当前系统时间
3星 · 编辑精心推荐
在使用 Mockito 进行单元测试时,我们需要使用 PowerMockito 来 mock 当前系统时间。以下是一个使用 PowerMockito 的示例:
```java
@RunWith(PowerMockRunner.class)
@PrepareForTest({YourClass.class})
public class YourClassTest {
@Test
public void testYourMethod() throws Exception {
// Set the current system time to a fixed value
long mockTime = System.currentTimeMillis();
PowerMockito.mockStatic(System.class);
PowerMockito.when(System.currentTimeMillis()).thenReturn(mockTime);
// Call your method that uses the current system time
YourClass yourClass = new YourClass();
long result = yourClass.yourMethod();
// Assert that the method returned the mocked system time
assertEquals(mockTime, result);
}
}
```
在上面的示例中,我们使用 `PowerMockito.mockStatic()` 方法来 mock `System` 类,并使用 `PowerMockito.when()` 方法来模拟 `System.currentTimeMillis()` 方法并将其返回 mock 对象。然后,我们调用被测试的方法,并验证其返回的结果是否正确。
需要注意的是,使用 PowerMockito 进行单元测试需要添加一些额外的依赖和配置,具体可以参考 PowerMockito 的官方文档。此外,建议尽量避免在测试中使用当前系统时间,而应该使用可控的时间,例如使用模拟时间库(如 `joda-time` 或 `java.time.Clock`)来替代系统时间。
阅读全文