使用FEST-Swing测试GUI

简介:
 
在Java中最常用的单元测试工具要算JUnit了。FEST-Swing是一个能够与JUnit集成的GUI测试框架。使用FEST-Swing可以更方便的对Swing进行一系列的测试。下面就说一下如何使用FEST-Swing进行测试。
 
首先到 [url]http://code.google.com/p/fest/downloads/list[/url]上面下载最新的FEST-Swing文件,一般文件名应该是fest-swing-x.x.zip。下载完成之后解压,其目录结构为:
注意,需要将fest-swing-1.0.jar以及lib下面的所有文件都添加到工程路径下,同时需要添加JUnit支持。这里我们使用JUnit4,添加完成之后即可使用FEST-Swing了。
 
下面新建一个被测试文件,代码如下:
import java.awt.BorderLayout; 
import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.Box; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 

public  class MyFrame  extends JFrame { 
   public MyFrame() { 
    setTitle( "My Frame"); 
    setSize(200, 100); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     
    Container content = getContentPane(); 
    Box vbox =  new Box(BoxLayout.Y_AXIS); 
    content.add(vbox, BorderLayout.CENTER); 
     
     final JLabel showTextLabel =  new JLabel( " "); 
    showTextLabel.setName( "show"); 
    vbox.add(showTextLabel); 
     final JTextField input =  new JTextField(); 
    input.setName( "input"); 
    vbox.add(input); 
    JButton button =  new JButton( "copy");
    button.setName("copy"); 
    button.addActionListener( new ActionListener() { 

      @Override 
       public  void actionPerformed(ActionEvent e) { 
        showTextLabel.setText(input.getText()); 
      } 
        
    }); 
    vbox.add(button); 
  } 
}
这里我们就不详细说明代码含义了,大体的功能是点击按钮,可以将JTextField输入的文字显示在JLabel上面。需要注意的是,FEST-Swing是使用组件的name值来获取组件的,因此这个setName方法的调用是必不可少的。
 
下面新建一个JUnit4 Test Case。首先需要有一个FrameFixture对象的属性。这里可以把FrameFixture理解成被测试的对象,因为我们想测试一个JFrame,所以使用FrameFixture。在FEST-Swing中,这些类与Swing的组件名字大体是一致的,只是后面多了一个Fixture。比如,JButton对应的类就是JButtonFixture。然后在@Before方法中对其进行实例化:
private FrameFixture frame; 
    
  @Before 
   public  void setUp() { 
    frame =  new FrameFixture( new MyFrame()); 
    frame.show();  // 将frame显示出来 
  }
 
在@After方法中对其进行清理:
@After 
   public  void tearDown() { 
    frame.cleanUp(); 
  }
 
然后编写@Test方法:
@Test 
   public  void testCopyTextToLabel() { 
    frame.textBox( "input").enterText( "Hello World!"); 
    frame.button( "copy").click(); 
    frame.label( "show").requireText( "Hello World!"); 
  }
尽管没有注释,我想这个代码已经很清楚了:首先获得frame上面的input,在其中输入Hello World!,然后点击copy按钮,这时show的文字要求是Hello World!这就是一段自说明的代码,很明白。这里就是像前面所说的,使用组件设定的name值来获取组件。
 
这样就编写完成一个测试用例了,整个的代码如下:
import org.fest.swing.fixture.FrameFixture; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 

public  class MyFrameTest { 

   private FrameFixture frame; 
    
  @Before 
   public  void setUp() { 
    frame =  new FrameFixture( new MyFrame()); 
    frame.show(); 
  } 

  @After 
   public  void tearDown() { 
    frame.cleanUp(); 
  } 

  @Test 
   public  void testCopyTextToLabel() { 
    frame.textBox( "input").enterText( "Hello World!"); 
    frame.button( "copy").click(); 
    frame.label( "show").requireText( "Hello World!"); 
  } 

下面运行这个测试用例,就可以看到执行情况……貌似还有动画效果,很漂亮。呵呵~~
 
其实这里也只是按照起 官方网站上面的 Getting Started说明了FEST-Swing的简单用法,更多具体的使用方法请参考网站上面的使用手册。


本文转自 FinderCheng 51CTO博客,原文链接:

http://blog.51cto.com/devbean/126828
相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
ChatGPT与基于GUI的自动化测试
ChatGPT与基于GUI的自动化测试,chrome浏览器+ cypress +HTML代码需要主机名脚本语言和测试目标的URL。
27 10
|
2月前
|
JavaScript 前端开发 Windows
使用webdriver实现基于GUI的测试
本文介绍的webdriver是playwright的插件
23 0
|
2月前
|
JavaScript 前端开发 测试技术
Selenium2Library实现基于GUI的测试
Selenium2Library实现基于GUI的测试
35 0
|
3月前
|
前端开发 JavaScript 测试技术
Python中的GUI测试
【8月更文挑战第15天】本文探讨了Python中图形用户界面(GUI)测试的关键工具——Selenium与PyQt。Selenium专为Web应用测试设计,能模拟用户行为如点击和输入文本。PyQt则基于Qt框架,用于构建丰富的桌面应用程序及编写自动化测试脚本。
37 3
|
4月前
|
监控 Python
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
|
前端开发 测试技术 人机交互
软件测试|超好用超简单的Python GUI库——tkinter(十四)
软件测试|超好用超简单的Python GUI库——tkinter(十四)
138 1
|
测试技术 数据安全/隐私保护 索引
软件测试|超好用超简单的Python GUI库——tkinter(五)
软件测试|超好用超简单的Python GUI库——tkinter(五)
137 0
软件测试|超好用超简单的Python GUI库——tkinter(五)
|
测试技术 人机交互 Python
软件测试|超好用超简单的Python GUI库——tkinter(四)
软件测试|超好用超简单的Python GUI库——tkinter(四)
126 0
软件测试|超好用超简单的Python GUI库——tkinter(四)
|
测试技术 Python
软件测试|超好用超简单的GUI库——tkinter(三)
软件测试|超好用超简单的GUI库——tkinter(三)
104 0
软件测试|超好用超简单的GUI库——tkinter(三)
|
编解码 测试技术 区块链
软件测试|超好用超简单的Python GUI库——tkinter(二)
软件测试|超好用超简单的Python GUI库——tkinter(二)
204 0
软件测试|超好用超简单的Python GUI库——tkinter(二)
下一篇
无影云桌面