在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

使用FEST-Swing测试GUI相关推荐

  1. Java使用IntelliJ IDEA创建一个基于Swing的GUI图形化程序,打包发布为jar

    1.创建GUI窗体 首先,直接新建一个默认的空的Java模块即可,随便取个名字 之后再src目录下右键,新建,创建一个Swing的GUI窗体,随便取个名字 给主窗体改个名字 到java代码中生成一个窗 ...

  2. 利用Swing和GUI的相关知识,设计并编程实现一个GUI简易计算器

    利用Swing和GUI的相关知识,设计并编程实现一个GUI简易计算器 要求: (1)至少实现"+"."-"."*"."/" ...

  3. 用Java开发桌面应用程序(Swing开发GUI程序)

    前面学过了面向对象基本概念.面向对象基本特征.Java基本包和API:异常.多线程.IO等. 基本概念 Swing:java中的一个包,负责开发GUI程序 GUI:图形用户界面,一般指可视化桌面系统中 ...

  4. NUnitForms 测试GUI应用程序的优秀工具

    著名的NUnit是单元测试的优秀工具,但是要在一个测试方法中启动GUI程序,比如Windows Form界面,这比较难做到.NUnitForms就是为解决这个问题产生的,它是NUnit的一个扩展程序, ...

  5. java swing 代码_java swing编写gui生命游戏代码,新手上路

    项目描述 生命游戏其实是一个零玩家游戏,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞.一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量.如果相邻方格活着 ...

  6. vip视频测试+GUI初部实验+webbrowser打开网页+安装和实战教程

    声明:博主使用的系统是ubuntu18.04 ,python为3.x 开始准备安装tkinter(python Gui),webbrowser(不知道为什么博主ubuntu原生3.6自带) 因为使用原 ...

  7. 测试GUI自动排版,发图纪念

    为了测试一下GUI自动排版,照着自己的手机做了一个GUI程序界面.特此发图以留纪念.

  8. 基于AWT、Swing的GUI编程 - 多个命令共享同一个监听器类

    用户点击窗口中的yellow按钮.用户按下Ctrl + Y 键,都会改变背景颜色至黄色.多个事件源调用的都是同一个类的actionPerformed()方法. Ctrl + Y 黄 Ctrl + B ...

  9. 基于AWT、Swing的GUI程序 - 改变观感

    本程序通用调用UIManager.getInstalledLookAndFeels()方法来获取本机已安装的所有观感,然后分别创建相应数量的Button,用来动态改变观感. 相关API : stati ...

最新文章

  1. 【 Linux 】安装、配置并用 Vim 编写第一个 C 程序
  2. PHP 配置文件详解(php.ini 详解 )
  3. P1338 末日的传说
  4. 3种Python字典合并方法
  5. 十年的老代码,你敢动?
  6. 百度地图gif图标_华为手机误删照片怎么找回?手机怎么快速制作GIF动图
  7. 强化学习《基于策略 - Policy Grident》
  8. java处理图片base64编码的相互转换
  9. 在线购物系统后台登录界面html代码,电子商城(购物网站)html模板源码
  10. 杨柳絮-Info:太原市多部门通力合作科学治理杨柳飞絮效果好
  11. 基于三层交换技术的校园网设计与实现
  12. 【AC.HASH】OpenHarmony啃论文俱乐部——在基于位置的隐私感知服务中实现K-匿名之浅析
  13. Android 学习网址大全
  14. Markdown做笔记或写博客
  15. 斜杆“/”和反斜杠“\”的区别
  16. Android_使用Android killer破解apk
  17. python安装路径,pip安装的包以及pip的安装路径在哪?
  18. escape()与unescape()
  19. 【期权课堂】第3课 如何像交易股票那样交易期权?
  20. iview级联选择组件的动态加载数据的使用与编辑回显

热门文章

  1. 关于Linux下上网速度慢的问题
  2. 全国大学生数学建模竞赛获奖难度
  3. LuaForWindows(SciTE) 5.1 常见问题
  4. 身家过亿的帝都王子来到1024盛宴-小码农献上linux进阶知识点一篇
  5. “悟空”来也!未上市就签几亿订单,看优必选机器人梦想的超级路径
  6. Brave浏览器 1.0正式面世, 为用户提供无与伦比的隐私保护和奖励
  7. maven 私库配置
  8. 分享一个云端电脑(让你的电脑少装几十款软件)
  9. 为什么.bat脚本不断重复执行同一命令
  10. 小学计算机走进魔力画室教案,山西经济出版社小学第一册三年级信息技术第三单元活动1-12教案教案2017年(37页)-原创力文档...