У мене є тест JUnit, який я хочу зачекати певний час синхронно. Мій тест JUnit виглядає так:
@Test
public void testExipres(){
SomeCacheObject sco = new SomeCacheObject();
sco.putWithExipration("foo", 1000);
// WAIT FOR 2 SECONDS
assertNull(sco.getIfNotExipred("foo"));
}
Я спробував Thread.currentThread().wait()
, але він видає IllegalMonitorStateException (як очікувалося).
У цьому є якась хитрість чи мені потрібен інший монітор?
Thread.sleep
те, що кажуть щось на зразок Використання Thread.sleep в тесті - це взагалі погана ідея. Це створює крихкі тести, які можуть непередбачувано провалитися залежно від середовища ("Проходить на моїй машині!") Або навантаження. Не покладайтесь на хронометраж (використовуйте макети) або використовуйте бібліотеки, такі як Awaitility, для асинхронного тестування.