Class | Description |
---|---|
ComponentFinderTemplate<T extends Component> |
Template for AWT or Swing
Component finders. |
DialogFinder |
Finder for AWT or Swing
Dialog s. |
FrameFinder |
Finder for
Frame s. |
JFileChooserFinder |
Looks up
JFileChooser s. |
JOptionPaneFinder |
Finder for
JOptionPane s. |
WindowFinder |
Looks up
Frame s and Dialog s. |
WindowFinderTemplate<T extends Window> |
Template for
Window finders. |
Utilities for finding Component
s.
An example is the main window of an application being shown after the user's credentials have been successfully verified. The following are the steps to complete such scenario:
The "tricky" part here is step 4. Authentication/authorization can take some time (depending on network traffic, etc). and we need to wait for the main window to appear in order to continue our test. It is possible to test this scenario with AssertJ-Swing:
loginDialog.textBox("username").enterText("yvonne"); loginDialog.textBox("password").enterText("welcome"); loginDialog.button("login").click(); // now the interesting part, we need to wait till the main window is shown. FrameFixture mainFrame = findFrame("main").using(loginDialog.robot); // we can continue testing the main window.
The "findFrame
" method (imported statically
from WindowFinder
) can lookup a Frame
(having "main" as its name)
with a default timeout of 5 seconds. That means that if in 5 seconds the frame we are looking for is not found, the
test will fail.
We can also specify a custom value for the timeout. For example, we can set the timeout to 10 seconds in two ways:
FrameFixture mainFrame = findFrame("main").withTimeout(10000).using(loginDialog.robot); // or FrameFixture mainFrame = findFrame("main").withTimeout(10, SECONDS).using(loginDialog.robot);
We can also look up Frames by type:
FrameFixture mainFrame = findFrame(MainFrame.class).using(loginDialog.robot);
Something that you may find weird in the code examples is "using(loginDialog.robot)
." This is
necessary because, in a given test, only one instance of Robot
can be running,
to prevent GUI tests from blocking each other on the screen. In another words, in a test class you can only use one
and only one instance of Robot
.
Copyright © 2014–2019 AssertJ. All rights reserved.