免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3853 | 回复: 0
打印 上一主题 下一主题

ff [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-04 18:43 |只看该作者 |倒序浏览
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP