一种最适合单元测试的方法是抽象代码中访问当前时间的方式.
您可以直接调用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; }
}
Run Code Online (Sandbox Code Playgroud)
然后,无论你在哪里调用System.getTimeMillis()而不是调用MyTime.getTime().在测试代码时,只需创建一个TestTimeImpl并调用MyTime.setTimeInterface(testTimeImpl).然后当你想要时间提前调用testTimeImpl.sleep()或testTimeImpl.setTime()时.
这允许您模拟任何时间到毫秒.
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |