快速业务通道

调试和测试Swing代码 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
障排除

不管编写功能 GUI 测试所用的库是什么,这种测试都易受到环境相关事件的 攻击。FEST-Swing 也不例外。例如,一次预定的反病毒扫描可能弹出一个对话 框来阻止正在测试的 GUI。FEST-Swing Robot 将不能访问 GUI 并最终因超时而 强迫测试终止。测试失败不是程序错误造成的,只是不合时宜而已。

FEST-Swing 的一个非常有用的特性是它能够在测试失败时摄取桌面截图。当 您在 IDE 内执行单个测试时,该截图会被自动嵌入到 JUnit 或 TestNG 报告中 ,或保存在目录中。图 6 显示了 GUI 测试失败后的一个 JUnit HTML 报告。注 意测试失败时 FEST-Swing 添加到桌面截图中的链接。

图 6. 从失败测试链接到桌面截图的 JUnit HTML 报告

造成测试失败的另一个常见原因是组件查询失败。推荐的查询组件的方式是 根据组件的惟一名称查询。有时您要测试的 GUI 的组件没有惟一名称,这时就 只能使用通用的搜索标准。有两种类型的组件查询失败:

无法找到 GUI 组件。例如,假设您在查询名称为 firstName 的 JTextField ,但是原先的开发人员忘记将该名称赋给组件。在这种情况下,FEST-Swing 在 抛出的 ComponentLookupException 中包含可用的组件层次结构,从而易于发现 失败的原因。在本例中,您可以检查组件层次结构以查看 JTextField 是否有正 确的名称,或是否真正将 JTextField 添加到 GUI。清单 7 显示了一个嵌入在 ComponentLookupException 中的组件层次结构:

清单 7. 包含组件层次结 构的 ComponentLookupException

org.fest.swing.exception.ComponentLookupException:   Unable to find component using matcher   org.fest.swing.core.NameMatcher[name=''ok'',  requireShowing=false]. Component hierarchy: myapp.MyFrame[name=''testFrame'', title=''Test'', enabled=true,  showing=true]   javax.swing.JRootPane[]    javax.swing.JPanel[name=''null.glassPane'']     javax.swing.JLayeredPane[]      javax.swing.JPanel[name=''null.contentPane'']      javax.swing.JTextField[name=''name'', text=''Click Me'',  enabled=true]

清单 7 中的组件层次结构有助于您推断出原先的开发人员为 JTextField 提 供了错误的名称。当前名称不是 firstName,而应该是 name。

调试和测试Swing代码(8)

时间:2011-06-11 IBM Alex Ruiz

找到多个 GUI 组件。这种情况会在有多个 GUI 组件匹配给定的搜索标准时 发生。例如,firstName 可能被不小心提供给两个 JTextField。当查询名为 firstName 的 JTextField 时,查询就会失败(并终止测试),因为两个组件具 有同一名称。为帮助您诊断这种问题,抛出的 ComponentLookupException 显示 所有找到的匹配组件,如清单 8 所示:

清单 8. ComponentLookupException 包含与某个搜索标准匹配的组件列表

org.fest.swing.exception.ComponentLookupException:   Found more than one component using matcher   org.fest.swing.core.NameMatcher[    name=''firstName'', type=javax.swing.JTextField,  requireShowing=false]. Found: javax.swing.JTextField[name=''firstName'', text='''', enabled=true] javax.swing.JTextField[name=''firstName'', text='''', enabled=true]

有时,在抛出的 ComponentLookupException 中检查组件层次结构会很难, 特别是当您在处理含有大量组件的 GUI 时。Swing Explorer 在这里再次提供很 大的帮助。如上所示,您仅需直接单击组件就可以选择和检查组件层级结构中任 何组件的属性。大的组件层次结构在 Swing Explorer 的 GUI 中要比由 ComponentLookupException 提供的基于文本的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号