void () { ThreadingAssertions.assertEventDispatchThread(); assert ApplicationManager.getApplication().isUnitTestMode(); Future<?> future = ApplicationManager.getApplication().executeOnPooledThread(() -> { while (true) { try { myFlushAlarm.waitForAllExecuted(10, TimeUnit.SECONDS); myFlushUserInputAlarm.waitForAllExecuted(10, TimeUnit.SECONDS); myFlushAlarm.waitForAllExecuted(10, TimeUnit.SECONDS); myFlushUserInputAlarm.waitForAllExecuted(10, TimeUnit.SECONDS); return; } catch (CancellationException e) { //try again } catch (InterruptedException | ExecutionException | TimeoutException e) { throw new RuntimeException(e); } } }); try { while (true) { try { future.get(10, TimeUnit.MILLISECONDS); break; } catch (TimeoutException ignored) { } UIUtil.dispatchAllInvocationEvents(); } } catch (InterruptedException | ExecutionException e) { throw new RuntimeException(e); } }