利用SWTBot实现Eclipse的应用程序的自动化测试开发

利用SWTBot实现高效的SWT和基于Eclipse的应用程序的自动化测试开发

 

SWTBot一个开源基于Java的自动化运行时测试工具,其测试速度快效率高,可以GUI测试SWT和基于Eclipse的应用程序,可以运行在SWT能运行的所有平台上,可以使得开发和测试人员更紧密而高效的合作开发自动化测试。SWTBot提供了许多访问SWTEclipse组件的API来隐藏SWTEclipse的复杂性,利用这些API即可方便地操控SWT控件来实现自动化测试。本文将介绍SWTBot如何测试SWT应用程序和它的一些基本工作机制。

 

SWTBot如何测试SWT应用程序:

 

本例采用jdk1.5swtbot2.0junit3.8来测试SWT应用程序中文本控件存在,重设文本内容并校验,代码如下:

package example.swtbot.test;

 

//import swt package

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Text;

//import swtbot package

import org.eclipse.swtbot.swt.finder.SWTBot;

import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;

//import junit package

import junit.framework.TestCase;

//import log4j package

import org.apache.log4j.PropertyConfigurator

 

public class HelloWorld extends TestCase{

 

SWTBot bot;

 

public void setUp() {

PropertyConfigurator.configure("config\\log4j.properties");

}

 

public void testHelloWorld() {

Display display = new Display();

Shell shell = new Shell(display);

shell.setText("Hello World");

shell.setSize(200, 80);

Text text = new Text(shell,SWT.MULTI | SWT.BORDER);

text.setBounds(0, 0, 200, 80);

text.setText("Hello World SWT");

shell.open();

 

bot = new SWTBot();

 

if(!display.isDisposed()){

SWTBotText t = bot.text("Hello World SWT", 0);

assertNotNull(t);

bot.sleep(600);

t.setText("new test string");

assertEquals("new test string", t.getText());

}

while(!shell.isDisposed()) {

if(!display.readAndDispatch()) display.sleep();

}

display.dispose();

}

}

 

编译前先拷贝本项目example.swtbot.test\lib\ext下的四个jar文件(如图1)到你的jre/lib/ext目录下,然后javac -cp lib\junit.jar -d bin src\example\swtbot\test\HelloWorld.java

1

运行可有多种方式,这里仅提供命令行方式:java -cp lib\junit.jar;bin junit.textui.TestRunner example.swtbot.test.HelloWorld,运行结果和本项目结构(如图2):

2

SWT应用程序启动界面(如图3)

图3

SWT应用程序测试界面(如图4),其文本控件重设文本内容成功。

图4

 

为保存测试结果运行前请拷贝本项目example.swtbot.test\config下的log4j.properties到你的项目config目录,其内容如下:

log4j.rootCategory=DEBUG, R, O

# Stdout

log4j.appender.O=org.apache.log4j.ConsoleAppender

# File

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=log4j.log

# Control the maximum log file size

log4j.appender.R.MaxFileSize=100KB

# Archive log files (one backup file here)

log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.O.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

猜你喜欢

转载自topmanopensource.iteye.com/blog/1969645