Java GUI Testing - JFCUnit Introduce
2010-01-19 20:32
190 查看
Java GUI Testing - JFCUnit Introduce Background: JFCUnit is an extension to the popular testing framework JUnit. 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; public class NewTestViewImpl extends JDialog implements TestView { /** * */ private static final long serialVersionUID = 1L; private JTextField nameField; private JButton submitButton; private JButton cancelButton; private JLabel nameLabel; private boolean proceed = false; public NewTestViewImpl(Object object) { // super(object); initComponents(); layoutComponent(); } private void initComponents() { this.nameField = new JTextField(15); this.submitButton = new JButton("OK"); this.cancelButton = new JButton("Cancel"); this.nameLabel = new JLabel("Test Name:"); } private void 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() { return nameField.getText(); } public void setTestName(String testName) { this.nameField.setText(testName); } public void display() { this.setVisible(true); } public boolean proceed() { return proceed; } public boolean cancelled() { return !proceed; } public static void main(String[] args) { new NewTestViewImpl(null).setVisible(true); } public void setupJFCNames() { nameField.setName("testNameField"); submitButton.setName("SubmitButton"); cancelButton.setName("CancelButton"); } public void addListener(Listener listener) { submitButton.addActionListener(listener); cancelButton.addActionListener(listener); } public void closeView() { } public void 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; public class NewTestViewImplTest extends JFCTestCase { private NewTestViewImpl newTestViewImpl = null; private TestHelper helper = null; public NewTestViewImplTest(String name) { super(name); } protected void setUp() throws Exception { super.setUp(); helper = new JFCTestHelper(); newTestViewImpl = new NewTestViewImpl(null); newTestViewImpl.setupJFCNames(); newTestViewImpl.setVisible(true); System.out.println("setup test case"); } protected void tearDown() throws Exception { newTestViewImpl = null; TestHelper.cleanUp(this); super.tearDown(); System.out.println("setup test case"); } public void 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()); } public static Test suite() { return new TestSuite(NewTestViewImplTest.class); } public static void 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/本文出自 “流浪的鱼” 博客,请务必保留此出处http://gloomyfish.blog.51cto.com/8837804/1400436
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; public class NewTestViewImpl extends JDialog implements TestView { /** * */ private static final long serialVersionUID = 1L; private JTextField nameField; private JButton submitButton; private JButton cancelButton; private JLabel nameLabel; private boolean proceed = false; public NewTestViewImpl(Object object) { // super(object); initComponents(); layoutComponent(); } private void initComponents() { this.nameField = new JTextField(15); this.submitButton = new JButton("OK"); this.cancelButton = new JButton("Cancel"); this.nameLabel = new JLabel("Test Name:"); } private void 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() { return nameField.getText(); } public void setTestName(String testName) { this.nameField.setText(testName); } public void display() { this.setVisible(true); } public boolean proceed() { return proceed; } public boolean cancelled() { return !proceed; } public static void main(String[] args) { new NewTestViewImpl(null).setVisible(true); } public void setupJFCNames() { nameField.setName("testNameField"); submitButton.setName("SubmitButton"); cancelButton.setName("CancelButton"); } public void addListener(Listener listener) { submitButton.addActionListener(listener); cancelButton.addActionListener(listener); } public void closeView() { } public void 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; public class NewTestViewImplTest extends JFCTestCase { private NewTestViewImpl newTestViewImpl = null; private TestHelper helper = null; public NewTestViewImplTest(String name) { super(name); } protected void setUp() throws Exception { super.setUp(); helper = new JFCTestHelper(); newTestViewImpl = new NewTestViewImpl(null); newTestViewImpl.setupJFCNames(); newTestViewImpl.setVisible(true); System.out.println("setup test case"); } protected void tearDown() throws Exception { newTestViewImpl = null; TestHelper.cleanUp(this); super.tearDown(); System.out.println("setup test case"); } public void 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()); } public static Test suite() { return new TestSuite(NewTestViewImplTest.class); } public static void 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/本文出自 “流浪的鱼” 博客,请务必保留此出处http://gloomyfish.blog.51cto.com/8837804/1400436
相关文章推荐
- Java GUI Testing - JFCUnit Introduce
- Java GUI Testing - JFCUnit Introduce
- jfcUnit: 测试Java GUI Swing
- Pragmatic Unit Testing in Java with JUnit 书评
- Eclipse报错:this compilation unit is not on the build path of a java project
- unit1---开始学Java
- Pragmatic Unit Testing in Java with JUnit 书评
- JUnit —— java Unit?
- JFC:Java
- Java培训 Unit 1阶段项目总结 一 看书吧小说在线阅读器
- Execution failed for task ':app:compileDebugUnitTestJavaWithJavac'. (Solved)
- Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode(
- JWebUnit使用:jWebUnit是基于Java的Web应用程序的测试框架
- Warbler, A Little Birdie To Introduce Your Rails App To Java
- Unit1 Java概述
- java core unit6读后感
- 用 JFC/Swing 将可访问性构建到您的 Java 应用程序中
- java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter6-27
- java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter6-28
- this compilation unit is not on the build path of a java project