出于测试目的,我正在尝试更改System.currentTimeMillis()方法的行为。我找到了下面的方法,但是我不能在代码中使用Aspect关键字。我不太了解如何使用此方法。有什么建议吗?
public aspect CurrentTimeInMillisMethodCallChanger {
long around():
call(public static native long java.lang.System.currentTimeMillis())
&& within(user.code.base.pckg.*) {
return 0; // provide your own implementation returning a long
}
}
有关更多详细信息,请参见包含上述代码源的related answer
答案 0 :(得分:8)
不要。如果您需要在特定时间进行测试,请不要在代码中使用System.currentTimeMillis()
,而应使用Clock
:
此抽象的主要目的是允许在需要时插入备用时钟。应用程序使用对象而不是静态方法来获取当前时间。这样可以简化测试。