你有遇到过这样的场景吗?
需要测试软件的某些日期相关功能,软件依靠操作系统获取当前日期,因此我们必须更改操作系统的日期,但日期和时间实际上是任何操作系统中的关键服务,更改操作系统的日期和时间可能会导致问题,例如某些应用程序服务器检查最后修改日期以决定是否重新编译JSP文件.
是否有任何智能方法来处理此类问题,例如在JVM级别或应用程序级别设置日期和时间?
如果您使用Java 8和类java.time,则可以使用Clock.在正常的应用程序运行时,您可以注入并使用由提供的正常系统时钟Clock.systemDefaultZone(),对于测试,您可以注入Clock具有固定时间的实例,例如,如果您需要更多控制,则提供Clock.fixed或子类化Clock.
然后,您需要将代码更改为:
// Inject this value somehow, eg using Spring
private Clock clock;
public LocalDateTime methodThatGeneratesTime() {
return LocalDateTime.now(clock); // Instead of just LocalDateTime.now()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |