public void testWaitsTillProgressBarCompletes() { final JFrame frame = new JFrame(); final JProgressBar progressBar1 = new JProgressBar(); final JProgressBar progressBar2 = new JProgressBar(0, 10); createProgressBarsInFrame(frame, progressBar1, progressBar2); setFocusManager(frame); windowContext.propertyChange(new PropertyChangeEvent(this, "focusOwner", null, progressBar2)); long before = System.currentTimeMillis(); Thread thread1 = spawnFirstThreadToInactivateFirstProgressBar(progressBar1); Thread thread2 = spawnSecondThreadToInactivateSecondProgressBar(progressBar2); windowContext.waitForProgressBar(); long after = System.currentTimeMillis(); assertTrue((after - before) > 500); ThreadUtil.sleep(100); assertFalse(thread1.isAlive()); assertFalse(thread2.isAlive()); frame.dispose(); }