Skip to content
Advertisement

JUnit Tests for GUI in Java

I would like to write test cases for a GUI. I want to know how do you simulate a click of JButton, or how do you extract the elements of a JTable.

For the purpose of this, I have built a simple GUI that increase the count by 1 if the button is clicked and the JTextfield is empty, but the count is replaced by the integer in the JTextfield if a number is provided. Of course I would like to use Regex to make sure the text entered into the JTextfield is actually an integer, but let’s assume users won’t mess around and enter a non-integer. In addition, the JLabel updates the current count while the JTable adds a new row.

Here’s the code:

JavaScript

Let’s say I would like to simulate opening the GUI, then click the button once without entering any text, then enter 1234 and click the button, then click the button without entering any text, the JTable should have 3 columns: {{1,0}, {1234, 1}, {1235, 1234}}. How can I write the test for that? Thanks!

Advertisement

Answer

Java SE comes with a standard tool for doing just this, the Robot class. I’ve only ever used it to write bots for games and to remotely control a separate computer via a socket server/client pair, but it was actually intended to automate testing, and so it should work for you. The basic format is simple:

JavaScript

Of course you can simulate keyboard events in a similiar way as well using the appropriate keyPress/keyRelease methods. I’ve sometimes found it useful to use the screenCapture method of the robot class as well to seach for images on the screen and determine where to click.

Note: this does not require that the windows you are testing are built on awt/swing, however it does require that the java implementaton you are using supports awt.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement