测试这个类可能没有意义,但如果你坚持,例如,如果你是项目中唯一一个拥有 0% 测试覆盖率的类的人 ;-) 那么这里有一个解决方案:
public void testClock() throws InterupteExcdeption {
Clock testClock = new Clock();
long time1 = testClock.getCurrentTime();
Thread.sleep(1000);
long time2 = testClock.getCurrentTime();
assertTrue(time2 > time1);
}
public void testClock2() throws InterupteExcdeption {
Clock testClock = new Clock();
long time1 = testClock.getCurrentTime();
Thread.sleep(1000);
long time2 = testClock.getCurrentTime();
assertTrue(time2 - time1 > 800);
long time3 = testClock.getCurrentTime();
long time4 = testClock.getCurrentTime();
// expecting a value of 0, but make the test defensive, use 100ms
assertTrue(time4 - time3 < 100);
}
进一步提示:您的时钟类应该实现一个IClock
接口,否则很难用模拟测试用例替换系统时钟。
IClock 的想法是您可以设置一个 MockClock,例如运行速度快十倍,或者您可以在哪里设置时间,然后由 getCurrentTime() 返回