`

(转)使用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-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.x:FEST 功能摆动测试

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

    swing

    开发Swing应用时,可以使用Eclipse、NetBeans或IntelliJ IDEA等集成开发环境,它们都提供了强大的Swing GUI设计器,允许开发者通过拖放组件来构建界面,而无需手动编写布局代码。此外,Swing Inspector等工具可以...

    fest swing

    Fest Swing是一个强大的Java自动化测试框架,专门针对Swing GUI应用程序设计。它允许开发者通过一种声明式的编程方式来测试Swing组件,使得测试过程更加直观和高效。在Java程序启动时,Fest Swing通过插入代理...

    swing autotest tools

    - **FEST (Functional Java Testing)**:FEST提供了一套方便的API来简化Swing应用的测试,包括对GUI组件的访问和操作。 - **TestFX**:针对JavaFX的测试框架,但也支持Swing应用,提供了JUnit和TestNG的集成。 在...

    AssertJSample:测试 AssertJ 用于 Swing 的示例项目

    4. 学习 Swing 的测试框架,如 `FEST-Swing`,它提供了专门针对 Swing 的断言和测试工具。 通过这个项目,你可以提升在使用 AssertJ 进行 Swing 应用测试方面的技能,更好地理解和应用测试驱动开发(TDD)和行为...

    JTreeFixture.html

    FEST Swing API文档(如`FEST Swing API.doc`)会详细介绍如何使用`JTreeFixture`以及其他Swing组件的测试支持。文档可能包含类的概述、方法签名、示例代码等,帮助开发者理解和利用这个强大的测试工具。 在实际...

Global site tag (gtag.js) - Google Analytics