Java程序中经常会用到new Date()
来获取当前系统时间,而单测时通常需要指定日期,因为不同时间程序会有不同响应。
普通的Mockito
无法实现mock时间,需要使用JMockit
或者Powermock
JMockit
先添加JMockit
依赖:
testImplementation 'junit:junit:4.13'
testImplementation 'org.jmockit:jmockit:1.49'
使用JMockit
mock 时间:
import java.util.Calendar;
import java.util.Date;
import mockit.Mock;
import mockit.MockUp;
import org.junit.jupiter.api.Test;
import org.springframework.util.Assert;
public class ServingWebContentApplicationTest {
@Test
public void mockTime() {
new MockUp<System>() {
@Mock
public long currentTimeMillis() {
Date fake = new Date(121, Calendar.APRIL, 29);
return fake.getTime();
}
};
Assert.isTrue(new Date().equals(new Date(121, Calendar.APRIL, 29)), "mock time failed");
}
}
Powermock
我在网上找了很多用Powermock
的教程,但每一个方法能用,我这里就不展示了。
文档信息
- 本文作者:last2win
- 本文链接:https://last2win.com/2021/03/28/java-mock-new-date/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)