当前位置: 首页 > 知识库问答 >
问题:

如何模拟系统类?[副本]

贾沛
2023-03-14

我正在尝试更改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
        }
}

有关更多详细信息,请参阅包含上述代码源代码的相关答案

共有1个答案

巫马玉堂
2023-03-14

不要。不要在代码中使用System.CurrentTimeMillis()如果需要使用特定时间进行测试,请改用时钟:

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

 类似资料:
  • 问题内容: 我有这样的代码片段: 在运行此测试时,我得到: 你知道我该怎么预防吗?我也许还有另一种方法可以模拟这样的代码: 问题答案: 尝试将此注释添加到您的Test类: 为我工作。

  • 问题内容: 我希望能够将go应用程序发出的每次写入/读取记录到底层操作系统,并且(如果可能)将FS完全替换为仅驻留在内存中的FS。 可能吗?怎么样?也许有一个现成的解决方案? 问题答案: 这直接是您(可能)不了解Go的 Andrew Gerrand的10件事: 为此,您需要编写代码以接受参数(也许将其嵌入其他类型,或者表示默认文件系统)。

  • 如何在Jellybean模拟器上启用系统导航栏(包括HOME/BACK/MENU)? 在谷歌上搜索这个,有人说可以通过更改属性来完成,但是我找不到在哪里设置这个常数。有人能帮我吗?

  • 我正在编写一些单元测试代码,我想模拟在我的函数中使用的模块:

  • 问题内容: 是否有标准方法(无需安装第三方库)在Python中进行跨平台文件系统模拟?如果我必须使用第三方库,那么哪个库是标准库? 问题答案: pyfakefs(主页)做您想要的–一个 伪造的 文件系统;它是第三方,尽管该第三方是Google。有关使用的讨论,请参见如何为被测模块替换文件访问引用。 对于 嘲笑 ,unittest.mock是用于Python 3.3+(标准库PEP 0417); 有

  • 我有这样一个代码片段: 在运行这些测试时,我得到了: 你知道我该怎么阻止吗?我也许还有另一种方法来嘲弄这样一段代码: