Java GUI Testing

Java GUI Testing – JFCUnit Introduce

Background:

JFCUnit is an extension to the popular testing frameworkJUnit. This document assumes you are familiar with the usage of JUnit. If not, visit the main JUnit website where there are a number of links to some excellent resources on the subject.

Environment setup & JFCUnit installing…

Download below jars:JUnit.jar 3.7 or greater, JFCUnit.jar, jakarta-regexp-1.5.jar

Install JRE1.4 or greater & Eclipse IDE

A Sample Java GUI & JFCUnit Test

1.Deploy downloaded jars into your project class path, see following image

2.create java GUI sample codes

package com.fish.ui;

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

publicclass NewTestViewImplextends JDialogimplements TestView {

/**

*

*/

privatestaticfinallongserialVersionUID = 1L;

private JTextFieldnameField;

private JButtonsubmitButton;

private JButtoncancelButton;

private JLabelnameLabel;

privatebooleanproceed =false;

public NewTestViewImpl(Object object) {

// super(object);

initComponents();

layoutComponent();

}

privatevoid initComponents() {

this.nameField = new JTextField(15);

this.submitButton = new JButton("OK");

this.cancelButton = new JButton("Cancel");

this.nameLabel = new JLabel("Test Name:");

}

privatevoid layoutComponent() {

JPanel topPane = new JPanel();

topPane.add(nameLabel);

topPane.add(nameField);

JPanel buttonPane = new JPanel();

buttonPane.setLayout(new FlowLayout());

buttonPane.add(submitButton);

buttonPane.add(cancelButton);

getContentPane().add(topPane, BorderLayout.NORTH);

getContentPane().add(buttonPane, BorderLayout.LINE_END);

pack();

}

public String getTestName() {

returnnameField.getText();

}

publicvoid setTestName(String testName) {

this.nameField.setText(testName);

}

publicvoid display() {

this.setVisible(true);

}

publicboolean proceed() {

returnproceed;

}

publicboolean cancelled() {

return !proceed;

}

publicstaticvoid main(String[] args) {

new NewTestViewImpl(null).setVisible(true);

}

publicvoid setupJFCNames() {

nameField.setName("testNameField");

submitButton.setName("SubmitButton");

cancelButton.setName("CancelButton");

}

publicvoid addListener(Listener listener) {

submitButton.addActionListener(listener);

cancelButton.addActionListener(listener);

}

publicvoid closeView() {

}

publicvoid openView() {

}

}

3.JFCUnit test codes

package com.fish.ui.test;

import javax.swing.JButton;

import javax.swing.JComponent;

import javax.swing.JTextField;

import com.fish.ui.NewTestViewImpl;

import junit.extensions.jfcunit.JFCTestCase;

import junit.extensions.jfcunit.JFCTestHelper;

import junit.extensions.jfcunit.TestHelper;

import junit.extensions.jfcunit.finder.NamedComponentFinder;

import junit.framework.Test;

import junit.framework.TestSuite;

publicclass NewTestViewImplTestextends JFCTestCase {

private NewTestViewImplnewTestViewImpl =null;

private TestHelperhelper =null;

public NewTestViewImplTest(String name) {

super(name);

}

protectedvoid setUp()throws Exception {

super.setUp();

helper =new JFCTestHelper();

newTestViewImpl =new NewTestViewImpl(null);

newTestViewImpl.setupJFCNames();

newTestViewImpl.setVisible(true);

System.out.println("setup test case");

}

protectedvoid tearDown()throws Exception {

newTestViewImpl =null;

TestHelper.cleanUp(this);

super.tearDown();

System.out.println("setup test case");

}

publicvoid testUI() {

System.out.println("start testing ok button……");

NamedComponentFinder finder = new NamedComponentFinder(

JComponent.class,"SubmitButton");

JButton submitButton = (JButton) finder.find(newTemplateViewImpl, 0);

assertNotNull("Could not find the submit button", submitButton);

finder = new NamedComponentFinder(

JComponent.class,"CancelButton");

JButton CancelButton = (JButton) finder.find(newTemplateViewImpl, 0);

assertNotNull("Could not find the cancel button", CancelButton);

finder = new NamedComponentFinder(

JComponent.class,"testNameField");

JTextField testNameField = (JTextField) finder.find(newTestViewImpl, 0);

assertNotNull("Could not find the cancel button", templateNameField);

newTestViewImpl.setTestName("mTestName");

assertEquals(testNameField.getText(), "mTestName");

//System.out.println(text);

testNameField.setText("");

assertEquals("Test field is not null","",newTestViewImpl.getTestName());

}

publicstatic Test suite() {

returnnew TestSuite(NewTestViewImplTest.class);

}

publicstaticvoid main(String args[]) {

junit.textui.TestRunner.run(suite());

}

}

4.Run JFCUnit test case using eclipse plug-in Junit Runner to load testcase and run.

More Information:

http://jfcunit.sourceforge.net/

午餐,晚餐。或许吃得不好,可是却依旧为对方擦去嘴角的油渍。

Java GUI Testing

相关文章:

你感兴趣的文章:

标签云: