gpt4 book ai didi

java - 删除 Java 应用程序中对操作系统的时间和日期依赖

转载 作者:行者123 更新时间:2023-11-30 06:07:29 24 4
gpt4 key购买 nike

您是否遇到过这样的场景:

需要测试软件的一些与日期相关的功能,该软件依赖操作系统来获取当前日期,因此我们必须更改操作系统的日期,但日期和时间实际上是任何操作系统中的关键服务,更改日期和时间操作系统的时间可能会引起问题,例如某些应用服务器会检查最后修改日期来决定是否重新编译JSP文件。

是否有任何聪明的方法来处理此类问题,例如在 JVM 级别或应用程序级别设置日期和时间?

最佳答案

如果您使用Java 8和java.time的类,您可以使用Clock 。在正常的应用程序运行时,您可以注入(inject)并使用由 Clock.systemDefaultZone() 提供的正常系统时钟,对于测试,您可以注入(inject)具有固定时间的 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()
}

关于java - 删除 Java 应用程序中对操作系统的时间和日期依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41407292/

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