Package org.fest.swing.fixture

The power and flexibility of FEST-Swing come from the fixtures in this package.

See: Description

Package org.fest.swing.fixture Description

The power and flexibility of FEST-Swing come from the fixtures in this package. Although you can use the BasicRobot directly, it is too low-level and requires, in our opinion, too much code. FEST fixtures can simplify creation and maintenance of functional GUI tests by:

  1. providing reliable lookup of GUI components (by component name or using custom criteria)
  2. simulating user events on GUI components
  3. providing assertion methods about the state of GUI components

The following example shows how easy is to use FEST fixtures. The test verifies that an error message is displayed if the user enters her username but forgets to enter her password.


  private FrameFixture window;  

  @BeforeMethod public void setUp() {
    window = new FrameFixture(new LoginWindow());
    window.show();
  }

  @AfterMethod public void tearDown() {
    window.cleanUp();
  }
  
  @Test public void shouldCopyTextInLabelWhenClickingButton() {
    window.textBox("username").enterText("some.user");
    window.button("login").click();
    window.optionPane().requireErrorMessage().requireMessage("Please enter your password");    
  }

The test uses a FrameFixture to launch the GUI to test (LoginWindow) and find the GUI components in such window. This is the recommended way to use FEST. We could also use individual fixtures to simulate user events, but it would result in more code to write and maintain:


  private BasicRobot robot;

  @BeforeMethod public void setUp() {
    robot = BasicRobot.robotWithNewAwtHierarchy();
    robot.showWindow(new LoginWindow());
  }

  @AfterMethod public void tearDown() {
    robot.cleanUp();
  }
  
  @Test public void shouldCopyTextInLabelWhenClickingButton() {
    new JTextComponentFixture(robot, "username").enterText("some.user");
    new JButtonFixture(robot, "login").click();
    new JOptionPaneFixture(robot).requireErrorMessage().requireMessage("Please enter your password");    
  }

Note: It is very important to clean up resources used by FEST (keyboard, mouse and opened windows) after each test; otherwise, the FEST robot will keep control of them and can make your computer pretty much unusable. To clean up resources call the method 'cleanUp' from BasicRobot, FrameFixture or DialogFixture.

Each fixture has the name of the GUI component it can control plus the word "Fixture" at the end. For example, JButtonFixture can simulate user events on JButtons.

Copyright © 2007-2012 FEST (Fixtures for Easy Software Testing). All Rights Reserved.