`

(转)使用FEST-Swing测试GUI

    博客分类:
  • Java
阅读更多

在Java中最常用的单元测试工具要算JUnit了。FEST-Swing是一个能够与JUnit集成的GUI测试框架。使用FEST-Swing可以更方便的对Swing进行一系列的测试。下面就说一下如何使用FEST-Swing进行测试。 
首先到http://code.google.com/p/fest/downloads/list上面下载最新的FEST-Swing文件,一般文件名应该是fest-swing-x.x.zip。下载完成之后解压,注意,需要将fest-swing-1.0.jar以及lib下面的所有文件都添加到工程路径下,同时需要添加JUnit支持。这里我们使用JUnit4,添加完成之后即可使用FEST-Swing了。 
下面新建一个被测试文件,代码如下:
  1. import java.awt.BorderLayout;   
  2. import java.awt.Container;   
  3. import java.awt.event.ActionEvent;   
  4. import java.awt.event.ActionListener;   
  5. import javax.swing.Box;   
  6. import javax.swing.BoxLayout;   
  7. import javax.swing.JButton;   
  8. import javax.swing.JFrame;   
  9. import javax.swing.JLabel;   
  10. import javax.swing.JTextField;   
  11. public class MyFrame extends JFrame {   
  12.   public MyFrame() {   
  13.     setTitle("My Frame");   
  14.     setSize(200100);   
  15.     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  16.        
  17.     Container content = getContentPane();   
  18.     Box vbox = new Box(BoxLayout.Y_AXIS);   
  19.     content.add(vbox, BorderLayout.CENTER);   
  20.        
  21.     final JLabel showTextLabel = new JLabel(" ");   
  22.     showTextLabel.setName("show");   
  23.     vbox.add(showTextLabel);   
  24.     final JTextField input = new JTextField();   
  25.     input.setName("input");   
  26.     vbox.add(input);   
  27.     JButton button = new JButton("copy");  
  28.     button.setName("copy");   
  29.     button.addActionListener(new ActionListener() {   
  30.       @Override   
  31.       public void actionPerformed(ActionEvent e) {   
  32.         showTextLabel.setText(input.getText());   
  33.       }   
  34.           
  35.     });   
  36.     vbox.add(button);   
  37.   }   
  38. }  
 
这里我们就不详细说明代码含义了,大体的功能是点击按钮,可以将JTextField输入的文字显示在JLabel上面。需要注意的是,FEST-Swing是使用组件的name值来获取组件的,因此这个setName方法的调用是必不可少的。 
下面新建一个JUnit4 Test Case。首先需要有一个FrameFixture对象的属性。这里可以把FrameFixture理解成被测试的对象,因为我们想测试一个JFrame,所以使用FrameFixture。在FEST-Swing中,这些类与Swing的组件名字大体是一致的,只是后面多了一个Fixture。比如,JButton对应的类就是JButtonFixture。然后在@Before方法中对其进行实例化:
  1. private FrameFixture frame;   
  2.       
  3. @Before   
  4. public void setUp() {   
  5.   frame = new FrameFixture(new MyFrame());   
  6.   frame.show(); // 将frame显示出来   
  7. }  
 
在@After方法中对其进行清理:
  1. @After   
  2. public void tearDown() {   
  3.   frame.cleanUp();   
  4. }  
 
然后编写@Test方法:
  1. @Test   
  2. public void testCopyTextToLabel() {   
  3.   frame.textBox("input").enterText("Hello World!");   
  4.   frame.button("copy").click();   
  5.   frame.label("show").requireText("Hello World!");   
  6. }  
 
尽管没有注释,我想这个代码已经很清楚了:首先获得frame上面的input,在其中输入Hello World!,然后点击copy按钮,这时show的文字要求是Hello World!这就是一段自说明的代码,很明白。这里就是像前面所说的,使用组件设定的name值来获取组件。 
这样就编写完成一个测试用例了,整个的代码如下:
  1. import org.fest.swing.fixture.FrameFixture;   
  2. import org.junit.After;   
  3. import org.junit.Before;   
  4. import org.junit.Test;   
  5. public class MyFrameTest {   
  6.   private FrameFixture frame;   
  7.       
  8.   @Before   
  9.   public void setUp() {   
  10.     frame = new FrameFixture(new MyFrame());   
  11.     frame.show();   
  12.   }   
  13.   @After   
  14.   public void tearDown() {   
  15.     frame.cleanUp();   
  16.   }   
  17.   @Test   
  18.   public void testCopyTextToLabel() {   
  19.     frame.textBox("input").enterT
    分享到:
    评论

相关推荐

    fest-swing文档

    总的来说,"fest-swing文档"是一个全面的学习资源,它涵盖了从基础到高级的Fest-Swing使用技巧。无论你是Swing测试的新手还是有经验的开发者,都能从中受益,提升你的自动化测试能力。通过阅读和实践文档中的内容,...

    fest-swing-1.2 Java Packets

    FEST-Swing是一个用于Swing GUI应用程序功能测试的java开源类库。支持模拟用户交互( 鼠标操作和键盘输入)。支持JDK中的所有Swing组件。提供简洁、强大的API来创建和维护GUI功能测试。

    fest-swing-1,2a4.jar

    FEST-Swing是一个用于Swing GUI应用程序功能测试的java开源类库。支持模拟用户交互( 鼠标操作和键盘输入)。支持JDK中的所有Swing组件。提供简洁、强大的API来创建和维护GUI功能测试。

    fest-swing-1.2

    web服务demo程序及扩展。 Apache License Version 2.0, January 2004 ... TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1.... "License" shall mean the terms and conditions for use, ...

    fest-swing-1.x:FEST 功能摆动测试

    使用 FEST-Swing 编写的测试也很健壮。 FEST 在操作系统级别模拟实际用户手势,确保应用程序在用户面前正确运行。 它还为 GUI 组件查找提供了一种可靠的机制,以确保 GUI 布局或外观的更改不会破坏您的测试。 欲知...

    swing

    3. 异步事件模型:Swing使用Event Dispatch Thread (EDT)处理所有的GUI事件,确保了界面更新的线程安全,避免了因多线程操作导致的UI问题。 4. 组件丰富:Swing包含了大量的组件,如JButton、JLabel、JTable、JTree...

    maven-fest-assertion-generator-plugin-1.0.jar

    maven-fest-assertion-generator-plugin-1.0.jar

    Android代码-fest-reflect

    FEST-Reflect provides an intuitive, compact and type-safe fluent API that makes Java reflection tremendously easy to use: no more casting, checked exceptions, PriviledgedActions or calls to ...

    maven-fest-assertion-generator-plugin-1.0-sources.jar

    maven-fest-assertion-generator-plugin-1.0-sources.jar

    fest swing

    在提供的压缩包文件"fest-swing-1.2a4"中,包含了Fest Swing 1.2 alpha 4版本的源码、库文件和其他相关资源。开发者可以下载这个版本,根据项目的具体需求进行集成和使用。在实际应用中,通常会将Fest Swing与JUnit...

    fest-assert-2.x, FEST断言 2.x.zip

    fest-assert-2.x, FEST断言 2.x fest断言为断言提供了一个连贯的接口。例如:int removed = employees.removeFired();assertThat(removed).isZero();List<Employee&g

    Python库 | fest-0.1.2.tar.gz

    1. 解压:首先,你需要使用`tar -zxvf fest-0.1.2.tar.gz`命令来解压缩文件,这将创建一个名为"fest-0.1.2"的目录。 2. 进入目录:然后,通过`cd fest-0.1.2`进入解压后的目录。 3. 配置和编译(如果需要):某些...

    FEST-3D:有限体积显式3维(FEST-3D)求解器的源代码

    FEST-3D:有限体积的显式三维结构目标FEST3D(有限体积的显式三维结构)是用Fortran 90编写的计算流体动力学代码,用于使用最新的有限体积数值方法在结构化网格上求解Navier-Stokes方程。 它是一种模块化的多块有限...

    前端开源库-type-fest

    1. **API接口定义**: 在编写与后端交互的前端代码时,可以使用Type-Fest的类型来定义请求和响应的结构,提高代码的准确性。 2. **配置文件**: 当处理配置对象时,可以利用Type-Fest的类型来确保配置项符合预期,减少...

    funkyjfunctional-fest-assert-1.0-sources.jar

    实测可用

    funkyjfunctional-fest-assert-0.4-sources.jar

    实测可用

    funkyjfunctional-fest-assert-1.1-sources.jar

    实测可用

    funkyjfunctional-fest-assert-1.1.jar

    实测可用

    funkyjfunctional-fest-assert-0.4.jar

    实测可用

Global site tag (gtag.js) - Google Analytics