java.lang.IllegalStateException on testing a JInternalFrame

92 views
Skip to first unread message

Robson Alécio Somera

unread,
Jul 24, 2013, 10:23:39 PM7/24/13
to easyt...@googlegroups.com
Hi guys,

I have the following test class:
package swingutils.internalframes;

import static org.fest.assertions.Assertions.assertThat;

import org.fest.swing.core.BasicRobot;
import org.fest.swing.core.ComponentLookupScope;
import org.fest.swing.core.Robot;
import org.fest.swing.edt.FailOnThreadViolationRepaintManager;
import org.fest.swing.edt.GuiActionRunner;
import org.fest.swing.edt.GuiQuery;
import org.fest.swing.fixture.JButtonFixture;
import org.fest.swing.fixture.JInternalFrameFixture;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class CadastreFrameTest {
private static final String BUTTON_NEW = "btnNew";
private static final String BUTTON_EDIT = "btnEdit";
private static final String BUTTON_SAVE = "btnSave";
private static final String BUTTON_DELETE = "btnDelete";
private static final String BUTTON_NEW_SEARCH = "btnNewSearch";
private static final String BUTTON_SEARCH = "btnSearch";
private JInternalFrameFixture window;

@BeforeClass
public static void setUpOnce() {
FailOnThreadViolationRepaintManager.install();
}
@Before
public void setUp() {
CadastreFrame frame = GuiActionRunner.execute(new GuiQuery<CadastreFrame>() {

@Override
protected CadastreFrame executeInEDT() throws Throwable {
CadastreFrame cadastreFrame = new CadastreForTestFrame(null);
cadastreFrame.show();
cadastreFrame.setVisible(true);
return cadastreFrame;
}
});
Robot robot = BasicRobot.robotWithNewAwtHierarchy();
robot.settings().componentLookupScope(ComponentLookupScope.ALL);
window = new JInternalFrameFixture(robot, frame);
}
@Test
public void testOpen() {
window.button(BUTTON_NEW).requireEnabled();
window.button(BUTTON_EDIT).requireDisabled();
window.button(BUTTON_SAVE).requireDisabled();
window.button(BUTTON_DELETE).requireDisabled();
window.button(BUTTON_NEW_SEARCH).requireEnabled();
window.button(BUTTON_SEARCH).requireEnabled();
assertThat(windowTarget().getActualSection()).isEqualTo(CadastreFrame.SEARCH_SECTION);
}
@Test
public void testInsert() {
JButtonFixture buttoNew = window.button(BUTTON_NEW);
buttoNew.click(); //
buttoNew.requireDisabled();
window.button(BUTTON_EDIT).requireDisabled();
window.button(BUTTON_SAVE).requireEnabled();
window.button(BUTTON_DELETE).requireEnabled();
window.button(BUTTON_NEW_SEARCH).requireDisabled();
window.button(BUTTON_SEARCH).requireDisabled();
assertThat(windowTarget().getActualSection()).isEqualTo(CadastreFrame.RECORD_SECTION);
}

private CadastreFrame windowTarget() {
return (CadastreFrame) window.target;
}
}

when I run the testInsert gives this error:
java.lang.IllegalStateException: Expecting component javax.swing.JButton[name='btnNew', text='', enabled=true, visible=true, showing=false] to be showing on the screen
at org.fest.swing.driver.ComponentStateValidator.componentNotShowingOnScreenFailure(ComponentStateValidator.java:87)
at org.fest.swing.driver.ComponentStateValidator.validateIsShowing(ComponentStateValidator.java:72)
at org.fest.swing.driver.ComponentStateValidator.validateIsEnabledAndShowing(ComponentStateValidator.java:44)
at org.fest.swing.driver.ComponentDriver$2.executeInEDT(ComponentDriver.java:499)
at org.fest.swing.edt.GuiTask.run(GuiTask.java:37)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
at org.fest.swing.edt.GuiActionRunner.execute(GuiActionRunner.java:97)
at org.fest.swing.driver.ComponentDriver.assertIsEnabledAndShowing(ComponentDriver.java:497)
at org.fest.swing.driver.ComponentDriver.click(ComponentDriver.java:93)
at org.fest.swing.fixture.JButtonFixture.click(JButtonFixture.java:99)
at swingutils.internalframes.CadastreFrameTest.testInsert(CadastreFrameTest.java:61)

The testOpen works fine, but I've had to put this line:
robot.settings().componentLookupScope(ComponentLookupScope.ALL);

Any idea how to solve this?

Thanks.

Reply all
Reply to author
Forward
0 new messages