王朝网络
分享
 
 
 

JFCUnit测试GUI的一个实例(代码篇)

王朝java/jsp·作者佚名  2006-02-01
宽屏版  字体: |||超大  

有关如何设置JFCUnit,请参考我前面的文章:JFCUnit测试GUI的一个实例(配置篇)

http://blog.csdn.net/EagleWatch/archive/2005/08/24/464541.aspx

下面给出被测试代码,因为只是普通的样例,所以不加以太多的说明。这段GUI代码的编写使用了Eclipse的GUI创建插件——Visual Editor,如果你有兴趣可以去相关的网站看看,有关这方面的介绍还是很多的。

因为时参考一部分资料,加上自己摸索做的DEMO,如果有什么问题和建议欢迎和我联系(DanielWJiang@Gmail.com)我会在第一时间更新这篇文章。

下面的应用程序的主要功能是,当用户在JTestField中输入数据,显示控件会同步显示输入的信息,点击OK按钮退出程序。

JFCUnit没有直接在Eclipse内建的项目中给出可视化的创建JFCUnit Test Case的方法(也许是我我没有了解到)。这里采用的方法是利用Eclipse内提供的JUnit Test Case创建向导产生一个JUnitTestCase的派生类,然后改变extend后面的类名称为JFCTestCase。因为JFCUnit是JUnit的一个延伸,所以你这样做不会有任何问题。

这便有必要提一下的是,JUnit对于我们的用户界面,除了它默认的原始类构造函数,main(),构造函数setUp()和析构函数tearDown()以外,不会创建任何测试函数,这一点和JUnit一般的测试不同,所以我们必须手动创建一些测试函数。

手动创建的函数必须满足:

§ 它是一个public final的函数

§ 而且必须以test冠以函数名

要演示的例子当中可以看到的手动添加的函数有两个,一个是testDialog(),另一个是testAllComponentsInit()。先看testDialog()这个函数:

public final void testDialog() {

JDialog dialog;

java.util.List showingWindows;

NamedComponentFinder finder = new NamedComponentFinder(

JComponent.class, "OKButton");

JButton okButton = (JButton) finder.find(demo, 0);

assertNotNull("Could not find the OK button", okButton);

DialogFinder dFinder = new DialogFinder(demo.getTitle());

showingWindows = dFinder.findAll();

dialog = (JDialog) showingWindows.get(0);

finder.setName("InputField");

inputText = (JTextField) finder.find(demo, 0);

assertNotNull("Could not find JTextField", inputText);

finder.setName("DisplayField");

displayText1 = (JTextField) finder.find(demo, 0);

assertNotNull("Could not find JTextField", displayText1);

XMLParser xmlFile;

int len;

try {

xmlFile = new XMLParser();

xmlFile.setURI(".\\config.xml");

len = xmlFile.getTestDataListLength();

ctrlName = xmlFile.getCtrlNames();

ctrlValue = xmlFile.getCtrlValues();

String content = HtmlMaker.HtmlFileHeader();

for (int i = 0; i < len; i++) {

try {

index = i;

// Make the text field get the focus

pauseAWT();

inputText.setText(ctrlValue[i]);

inputText.requestFocus();

assertEquals("Set focus failed.", inputText.getText(),

ctrlValue[i]);

JFCTestHelper.disposeWindow(dialog, this);

okButton.requestFocus();

flushAWT();

// Gernate the report of the test

content = HtmlMaker.HtmlFileContentsFill(content, inputText

.getName(), inputText.getText());

content = HtmlMaker.HtmlFileContentsFill(content, displayText1

.getName(), displayText1.getText());

// Simulate click the OK button.

pauseAWT();

getHelper().enterClickAndLeave(

new MouseEventData(this, okButton));

flushAWT();

} catch (Exception ex) {

ex.printStackTrace();

}

}

content = HtmlMaker.HtmlFileEnd(content);

HtmlMaker html = new HtmlMaker(content);

} catch (Exception ex) {

ex.printStackTrace();

}

}

§ NamedComponentFinder finder = new NamedComponentFinder(JComponent.class, "OKButton");

NamedComponentFinder是JFCUnit提供的类,用来寻找当前窗体中的控件类实例。这边调用了带参构造函数找寻OK按钮。

§ JButton okButton = (JButton) finder.find(demo, 0);

利用找到的结果来获得OK按钮的控制。

§ assertNotNull("Could not find the OK button", okButton);

为了使下面的测试有意义,所以有必要判断是否为非空的,否则判定当前的TestCase没有成功。

§ DialogFinder dFinder = new DialogFinder(demo.getTitle());

showingWindows = dFinder.findAll();

dialog = (JDialog) showingWindows.get(0);

是可以用上面讲到的内容举一反三了解它的功能是获取窗体实例。

§ inputText.requestFocus();

使输入对话框获取焦点。

§ getHelper().enterClickAndLeave(new MouseEventData(this, okButton));

模拟鼠标点击事件。

§ pauseAWT();

用来停止awt的事件队列,根据文档上的说明,使用pauseAWT()会在调用releaseAWT()以后后恢复队列的运行。但是我尝试调用这个releaseAWT()函数,Eclipse告诉我没有这样的函数定义。在文档中搜索着个函数的定义没有发现。这里我用了flushAWT()来达到启动队列的效果。

§ flushAWT();

上面我们提到了是启动消息队列。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有