assertj / assertj-swing

Fluent assertions for Swing apps
Other
108 stars 52 forks source link

IllegalThreadStateException in EDT #241

Open grafandreas opened 5 years ago

grafandreas commented 5 years ago

Hi all, (I opened this issues by mistake in assertj-core, too. Sorry for that).

the documentation says that the code using AssertJ should run in the EDT. I am running a JUnit test that actually runs in the EDT.

However, when invoking code like this on a JTreeFixture: jtf.showPopUpMenu(2) I am getting an exception

java.lang.IllegalThreadStateException: Cannot call method from the event dispatcher thread at org.assertj.swing.core.BasicRobot.waitForIdle(BasicRobot.java:825) at org.assertj.swing.core.BasicRobot.waitForIdle(BasicRobot.java:794) at org.assertj.swing.core.BasicRobot.moveMouse(BasicRobot.java:538) at org.assertj.swing.core.BasicRobot.moveMouse(BasicRobot.java:528) at org.assertj.swing.core.BasicRobot.moveMouse(BasicRobot.java:522) at org.assertj.swing.core.BasicRobot.focus(BasicRobot.java:292) at org.assertj.swing.core.BasicRobot.focusAndWaitForFocusGain(BasicRobot.java:270) at org.assertj.swing.core.BasicRobot.showPopupMenu(BasicRobot.java:889) at org.assertj.swing.driver.JTreeDriver.showPopupMenu(JTreeDriver.java:676) at org.assertj.swing.fixture.JTreeFixture.showPopupMenuAt(JTreeFixture.java:579)

Wait for Idle explicitely wants not to be run in the EDT. I tried running the code in a thread of its own but did not succeed. Any suggestions on how to tackle this problem would be most welcome.