Java GUI Testing - JFCUnit Introduce

简介: Java GUI Testing - JFCUnit Introduce Background: JFCUnit is an extension to the popular testing framework JUnit.

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/

目录
相关文章
|
2月前
|
Java 编译器
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
40 0
|
Java iOS开发
(已解决)MAC JAVA错误:Cocoa AWT: Not running on AppKit thread 0 when expected
(已解决)MAC JAVA错误:Cocoa AWT: Not running on AppKit thread 0 when expected
102 0
|
分布式计算 安全 Java
JDK15 is coming,Do you konw the new features of java8?(下)
JDK15 is coming,Do you konw the new features of java8?(下)
59 0
|
JavaScript Java 容器
JDK15 is coming,Do you konw the new features of java8?(上)
JDK15 is coming,Do you konw the new features of java8?(上)
66 0
|
Java
解决bug:项目配置java8时出现Error:Jack is required to support java 8 language features...
解决bug:项目配置java8时出现Error:Jack is required to support java 8 language features...
248 0
解决bug:项目配置java8时出现Error:Jack is required to support java 8 language features...
|
Java
NetBeans安装提示neatbeans cannot find java 1.8 or higher
NetBeans安装提示neatbeans cannot find java 1.8 or higher
299 0
|
Java Windows
SAP Java GUI integration log
SAP Java GUI integration log
|
机器学习/深度学习 Java API
Java基础知识的全面巩固_note1(附各种demo code)
拜读《核心技术卷》,笔记之。 提纲 1.编译运行第一个程序2.使用floorMod求模3.关于Math4.1数据类型 4.2 变量注意事项5.数值类型之间的转换(主要注意精度损失):6.
999 0
|
Java 编译器