Ich habe einen JUnit-Test, auf den ich synchron einige Zeit warten möchte. Mein JUnit-Test sieht folgendermaßen aus:
@Test
public void testExipres(){
SomeCacheObject sco = new SomeCacheObject();
sco.putWithExipration("foo", 1000);
//WAIT FOR 2 SECONDS
assertNull(sco.getIfNotExipred("foo"));
}
Ich habe Thread.currentThread (). Wait () ausprobiert, aber es wird eine IllegalMonitorStateException ausgelöst (wie erwartet). Gibt es einen Trick oder brauche ich einen anderen Monitor?
Thread.sleepdass die Verwendung von Thread.sleep in einem Test im Allgemeinen nur eine schlechte Idee ist. Es entstehen spröde Tests, die je nach Umgebung ("Passes on my machine!") Oder Belastung unvorhersehbar fehlschlagen können. Verlassen Sie sich nicht auf das Timing (verwenden Sie Mocks) oder verwenden Sie Bibliotheken wie Awaitility für asynchrone Tests.