如何模拟系统类?

时间:2020-05-26 09:06:34

标签: java aspectj aspect

出于测试目的,我正在尝试更改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

1 个答案:

答案 0 :(得分:8)

不要。如果您需要在特定时间进行测试,请不要在代码中使用System.currentTimeMillis(),而应使用Clock

此抽象的主要目的是允许在需要时插入备用时钟。应用程序使用对象而不是静态方法来获取当前时间。这样可以简化测试。