`
longgangbai
  • 浏览: 7330930 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Swing自动化测试的工具FEST-Swing

阅读更多

         FEST-Swing是一个用于Swing GUI应用程序功能测试的java开源类库。支持模拟用户交互(鼠标操作和键盘输入)。支持JDK中的所有Swing组件。提供简洁、强大的API来创建和维护GUI功能测试。支持在HTML测试报告中嵌入GUI测试失败的截屏。能够与JUnit或TestNG一起使用。
关于FEST-Swing的官方网站:

http://fest.easytesting.org/

Google的位置:

http://code.google.com/p/fest/

在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了。
下面新建一个被测试文件,代码如下:
package com.easyway.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; 
/**
 * SWing测试的主界面
 * @author longgangbai
 *
 */
public class CustomFrame extends JFrame { 
  /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public CustomFrame() { 
	    setTitle("My Frame"); 
	    setSize(400, 300); 
	    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方法中对其进行实例化:
测试代码:
package com.easyway.swing.test;

import org.fest.swing.fixture.FrameFixture;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.easyway.swing.CustomFrame;
/**
 *     FEST-Swing是一个用于Swing GUI应用程序功能测试的java开源类库。支持模拟用户交互(鼠标操作和键盘输入)。
 *     支持JDK中的所有Swing组件。提供简洁、强大的API来创建和维护GUI功能测试。支持在HTML测试报告中嵌入GUI测试失败的截屏。
 *     能够与JUnit或TestNG一起使用。
 * @author longgangbai
 *
 */
public class CustomFrameTest { 

  private FrameFixture frame; 
  /**
   * 创建主窗体对象
   */
  @Before 
  public void setUp() { 
    frame = new FrameFixture(new CustomFrame()); 
    frame.show(); 
  } 

  /**
   * 在@After方法中对其进行清理:
   */
  @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!"); 
  } 
} 
 备注:需要在classpath中添加FEST-Swing中lib的jar文件和fest-swing的jar文件。
 
 
以下摘自:

Fluent Assertions

This module provides a fluent interface for assertions. FEST's assertions are incredibly easy to write: just type "assertThat" followed the actual value and a dot, and any Java IDE will show you all the assertions available for the type of the given object to verify. No more confusion about the order of the "expected" and "actual" values. Our assertions are very readable as well: they read very close to plain English, making it easier for non-technical people to read test code.

Here are some examples:

int removed = employees.removeFired();
assertThat(removed).isZero();
 
List<Employee> newEmployees = employees.hired(TODAY);
assertThat(newEmployees).hasSize(6)
                        .contains(frodo, sam);

assertThat(yoda).isInstanceOf(Jedi.class)
                .isEqualTo(foundJedi)
                .isNotEqualTo(foundSith);

We currently have two branches of FEST-Assert. The 1.x branch is the stable one that is not longer under development. The 2.x branch, currently under development, is a brand-new FEST-Assert that provides a better fluent interface and better extensibility options.

Fluent Reflection

This module provides an intuitive, compact and type-safe fluent API for Java reflection. It makes Java reflection tremendously easy to use: no more casting, checked exceptions, PriviledgedActions or calls to setAccessible. FEST's reflection module can even overcome the limitations of generics and type erasure.

Person person = constructor().withParameterTypes(String.class)
                             .in(Person.class)
                             .newInstance("Yoda");

method("setName").withParameterTypes(String.class)
                 .in(person)
                 .invoke("Luke");

For more details, please visit the FEST-Reflect github project.

EasyMock Template

Our EasyMock template eliminates code duplication (repetitive calls to replay and verify) and clearly separates expectations from code to test.

@Testpublicvoid shouldUpdateEmployee(){
  newEasyMockTemplate(mockEmployeeDao){
    protectedvoid expectations(){
      mockEmployeeDAO.update(employee);
    }

    protectedvoid codeToTest(){
      employeeBO.updateEmployee(employee);
    }
  }.run();
}

Note: We are no longer developing the EasyMock template. We are currently replacing EasyMock with Mockito in our own tests. Since, in our opinion, Mockito's API is really nice and compact, it does not require a template.

分享到:
评论

相关推荐

    fest-swing文档

    Fest-Swing是一款Java库,专门用于自动化Swing应用程序的测试。它建立在FEST(Functional Java Testing)框架之上,提供了丰富的API来帮助开发者编写针对Swing组件的测试用例。这个“fest-swing文档”包含了对Fest-...

    (转)使用FEST-Swing测试GUI

    在实际项目中,结合使用FEST-Swing和持续集成工具(如Jenkins或Travis CI),可以实现GUI测试的自动化,从而大大提高开发效率和软件质量。 文件“FESTTest”可能是博客作者提供的一个示例测试代码,用于演示如何...

    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 布局或外观的更改不会破坏您的测试。 欲知...

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

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

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

    maven-fest-assertion-generator-plugin-1.0-sources.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 ...

    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&lt;Employee&g

    Python库 | fest-0.1.2.tar.gz

    在本例中,我们关注的是名为"fest"的Python库,其版本为0.1.2,被封装在一个名为"fest-0.1.2.tar.gz"的压缩包文件中。 "fest"库可能是一个专门设计来处理特定问题的模块集合,例如数据处理、文本分析、图像处理、...

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

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

    swing

    Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。Swing提供了一套丰富的组件,如按钮、文本框、滚动面板等,用于构建美观且功能丰富的桌面应用程序。它是在Java ...

    swing autotest tools

    Swing自动测试工具是Java开发领域中用于自动化测试Swing应用程序的框架和库。这些工具旨在帮助开发者提高测试效率,确保Swing应用的功能正确性和稳定性。Swing是Java的一个图形用户界面(GUI)工具包,广泛应用于...

    前端开源库-type-fest

    3. **类型实用工具**: 除了基本类型,Type-Fest还提供了许多有用的类型工具函数,如`NonNullable&lt;T&gt;`用于去除可选值和null/undefined。 **二、Type-Fest的常用类型** 1. **UrlSearchParams**: 提供了对URL查询参数...

    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

    实测可用

Global site tag (gtag.js) - Google Analytics