Tag: systemtime

覆盖Java System.currentTimeMillis以testing对时间敏感的代码

有没有办法,无论是在代码或JVM参数,通过System.currentTimeMillis覆盖当前时间,而不是手动更改主机上的系统时钟? 一点背景: 我们有一个系统,它运行许多会计工作,围绕当前date(即本月的第一个月,第一年等) 不幸的是,许多遗留代码调用函数,如新的Date()或Calendar.getInstance(),两者最终都会调用System.currentTimeMillis。 出于testing的目的,现在我们不得不手动更新系统时钟来操纵代码认为testing正在运行的时间和date。 所以我的问题是: 有没有办法来重写由System.currentTimeMillis返回的内容? 例如,告诉JVM在从该方法返回之前自动添加或减去一些偏移量? 提前致谢!