当前位置:  开发笔记 > 编程语言 > 正文

在linux中模拟"更快的时间"

如何解决《在linux中模拟"更快的时间"》经验,为你挑选了2个好方法。

我有一个在Linux上运行的Java应用程序,它有很多围绕时间和日期的事件和业务逻辑.

对于测试,是否有可能更快地调整某些东西.比方说,在一小时的墙上时间完成计算机一年的完成?



1> patros..:

您可以为时间/日期调用编写包装器界面.有一个真正的实现,可以进行真正的系统调用,以及一个可以做任何你想做的测试实现(运行更快,更慢,假日期等).



2> Tom Hennen..:

一种最适合单元测试的方法是抽象代码中访问当前时间的方式.

您可以直接调用System.currentTimeMillis(),而不是直接调用System.currentTimeMillis().

像这样的东西(伪代码):

class MyTime {
   private static TimeInterface CurrentTimeInterface = new DefaultTimeImpl();

   public setTimeInterface(TimeInterface timeInterface) {
      CurrentTimeInterface = timeInterface;
   }

   public int getTime() { CurrentTimeInterface.getTime(); }

}

class DefaultTimeImpl implements TimeInterface {
   public int getTime() { return System.currentTimeMillis(); }
}

class TestTimeImpl implements TimeInterface {
   private int CurrentTimeMillis = 0;
   public int getTime() { return CurrentTimeMillis; }
   public void setTime(int timeMillis) { CurrentTimeMillis = timeMillis}
   public void sleep(int millis) { CurrentTimeMillis += millis; }
}

然后,无论你在哪里调用System.getTimeMillis()而不是调用MyTime.getTime().在测试代​​码时,只需创建一个TestTimeImpl并调用MyTime.setTimeInterface(testTimeImpl).然后当你想要时间提前调用testTimeImpl.sleep()或testTimeImpl.setTime()时.

这允许您模拟任何时间到毫秒.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有