如何模拟系统类?[重复]

问题描述 投票:0回答:1

我试图改变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
        }
}

请看 相关回答 含有上述代码的源头,以了解更多细节。

java aspect
1个回答
8
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.