- 论坛徽章:
- 0
|
package fitnesse.test;
import java.awt.Button;
import java.awt.Component;
import java.awt.Frame;
import java.awt.TextField;
import java.lang.reflect.Method;
import javax.swing.JButton;
import javax.swing.JTextField;
import abbot.finder.matchers.ClassMatcher;
import abbot.tester.ButtonTester;
import abbot.tester.ComponentTester;
import abbot.tester.Robot;
import abbot.tester.TextComponentTester;
import junit.extensions.abbot.ComponentTestFixture;
/**
* 该程序是进行UI测试的通用框架,基于abbot的基础之上
* @author 吴笑笑
*
*/
public class SwingEasyTest extends ComponentTestFixture {
/**
* 启动应用程序
* @param frameclass 要测试的窗口
* @param methodName 启动窗口时候的方法
* @throws Exception
*/
public void init(Class frameclass, String methodName)
throws Exception {
//如果方法为空的话,就新建一个对象,否则就执行这个方法
if (methodName == null) {
frameclass.newInstance();
} else {
Method method = frameclass.getMethod(methodName);
method.invoke(frameclass.newInstance());
}
}
/**
* 获得窗口上的控件,如果窗口上的控件不是唯一的,就根据该控件的name属性来获取
* @param component 想要获得的控件的类型
* @param componentName 控件的名字
* @return
* @throws Exception
*/
private Component getComponent(Class component,
final String componentName) throws Exception {
if(componentName==null){
return getComponent(component);
}else{
return getFinder().find(new ClassMatcher(component) {
public boolean matches(Component c) {
return super.matches(c)
&&c.getName().equals(componentName);
}
});
}
}
/**
* 获得窗口上的控件,必须要保证该控件在窗口上是唯一的
* @param component 想要获得的控件的类型
* @return
* @throws Exception
*/
private Component getComponent(Class component) throws Exception {
return getFinder().find(new ClassMatcher(component));
}
/**
* 点击按钮
* @param component 按钮的类型(Button or JButton)
* @param buttonName 按钮的名字
* @throws Exception
*/
public void pressButton(Component component, final String buttonName)
throws Exception {
//获得button的测试者
ButtonTester buttonTester = new ButtonTester();
//如果是JButton如下进行
if (component instanceof JButton) {
JButton jbutton = (JButton) getComponent(JButton.class, buttonName);
buttonTester.actionClick(jbutton);
//如果是Button如下进行
} else if (component instanceof Button) {
Button button = (Button) getComponent(Button.class, buttonName);
buttonTester.actionClick(button);
}
}
/**
* 向文本框中输入字符
* @param component 文本框的类型(TextField or JTextField)
* @param textName 文本框的名字
* @param text 要输入的字符串
*/
public void enterText(Component component,String textName, String text) throws Exception{
//获得textfield的测试者
TextComponentTester textTester=new TextComponentTester();
//如果是JTextField如下进行
if (component instanceof JTextField) {
JTextField jtextfield = (JTextField)getComponent(JTextField.class, textName);
textTester.actionEnterText(jtextfield,text);
//如果是TextField如下进行
} else if (component instanceof TextField) {
TextField textfield = (TextField) getComponent(TextField.class, textName);
textTester.actionEnterText(textfield,text);
}
}
public String getText(Component component,String textName) throws Exception{
//如果是JTextField如下进行
if (component instanceof JTextField) {
JTextField jtextfield = (JTextField)getComponent(JTextField.class, textName);
return jtextfield.getText();
//如果是Button如下进行
} else if (component instanceof TextField) {
TextField textfield = (TextField) getComponent(TextField.class, textName);
return textfield.getText();
}
return null;
}
/**
* 执行的动作之间停顿的时间
*/
public void stopAction(int time){
new Robot().delay(time);
}
}
package fitnesse.test;
import java.awt.Button;
import java.awt.Component;
import java.awt.TextField;
import javax.swing.JOptionPane;
import junit.extensions.abbot.ComponentTestFixture;
import junit.extensions.abbot.TestHelper;
import abbot.finder.matchers.ClassMatcher;
import abbot.tester.ButtonTester;
import abbot.tester.ComponentTester;
import abbot.tester.Robot;
import abbot.tester.TextComponentTester;
public class PlusTest extends SwingEasyTest {
protected void setUp() throws Exception {
// 启动由于程序
init(PlusFrame.class, "showFrame");
}
public void testPlus() throws Exception {
// 第一步:010
// 向第一个文本框中输入0,第二个文本框中输入10
enterText(new TextField(), "num1", "0");
//stopAction(1000);
// 第二个文本框中输入10
enterText(new TextField(), "num2", "10");
//stopAction(1000);
// 单击=按钮
pressButton(new Button(), null);
// 预期结果
assertEquals("加法逻辑运算错误", "10", getText(new TextField(), "num3"));
//
// JOptionPane joptionpane = (JOptionPane) getFinder().find(
// new ClassMatcher(JOptionPane.class));
// assertEquals("加法运算判断错误", "输入的数字必须在0-10之间", joptionpane.getMessage());
}
public static void main(String[] args) {
TestHelper.runTests(args, PlusTest.class);
}
}
package fitnesse.test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class PlusFrame extends Frame {
// 定义三个输入框
TextField num1, num2, num3;
// 定义一个=按钮
Button btnEquals;
// 定义+标签
Label lblPlus;
//加法运算结果
Integer n3;
// 构造函数,初始化界面上的组件以及响应界面上的X按钮
public PlusFrame() {
num1 = new TextField(10);
num1.setName("num1");
num2 = new TextField(10);
num2.setName("num2");
num3 = new TextField(15);
num3.setName("num3");
btnEquals = new Button("=");
btnEquals.setName("equals1");
btnEquals.addActionListener(new PlusListener());
lblPlus = new Label("+");
// 响应界面上的X关闭按钮
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
// 显示整个界面
public void showFrame() {
setLayout(new FlowLayout());
add(num1);
add(lblPlus);
add(num2);
add(btnEquals);
add(num3);
pack();
setVisible(true);
}
//判断输入的数字是否合法
public boolean numIsRight(TextField num1,TextField num2){
if(num1.getText().equals("")||num2.getText()==null){
JOptionPane.showMessageDialog(null, "输入的数字必须在0-10之间", "数字验证出错",
JOptionPane.ERROR_MESSAGE);
return false;
}
int n1 = Integer.parseInt(num1.getText());
if (n1 > 10 || n1 10 || n2
package fitnesse.test;
import java.awt.Button;
import java.awt.Component;
import java.awt.TextField;
import abbot.script.ComponentReference;
import abbot.tester.ComponentTester;
import junit.extensions.abbot.ComponentTestFixture;
import junit.extensions.abbot.TestHelper;
import fit.ColumnFixture;
public class FitNesseTest extends ColumnFixture {
public String textFieldName1;
public String textFieldName2;
public String textFieldName3;
private Button btnEquals;
public boolean isRight=true;
private TextField num1,num2,num3;
public String text1, text2;
private AbbotTest at=new AbbotTest("aaa");
private ComponentTester testBasic = null;
private static PlusFrame f;
public FitNesseTest() throws Exception {
// f = new PlusFrame();
// f.showFrame();
at.setUp();
}
class AbbotTest extends ComponentTestFixture{
public AbbotTest(String name){
super(name);
}
protected void setUp() throws Exception {
}
}
public String testPlus() throws Exception {
return null;
}
public static void main(String args[]) {
try {
FitNesseTest ft=new FitNesseTest();
System.out.println(ft.testPlus());
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76927/showart_2045732.html |
|