调试和测试Swing代码 - 编程入门网
障排除
不管编写功能 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
清单 7 中的组件层次结构有助于您推断出原先的开发人员为 JTextField 提 供了错误的名称。当前名称不是 firstName,而应该是 name。 调试和测试Swing代码(8)时间:2011-06-11 IBM Alex Ruiz找到多个 GUI 组件。这种情况会在有多个 GUI 组件匹配给定的搜索标准时 发生。例如,firstName 可能被不小心提供给两个 JTextField。当查询名为 firstName 的 JTextField 时,查询就会失败(并终止测试),因为两个组件具 有同一名称。为帮助您诊断这种问题,抛出的 ComponentLookupException 显示 所有找到的匹配组件,如清单 8 所示: 清单 8. ComponentLookupException 包含与某个搜索标准匹配的组件列表
有时,在抛出的 ComponentLookupException 中检查组件层次结构会很难, 特别是当您在处理含有大量组件的 GUI 时。Swing Explorer 在这里再次提供很 大的帮助。如上所示,您仅需直接单击组件就可以选择和检查组件层级结构中任 何组件的属性。大的组件层次结构在 Swing Explorer 的 GUI 中要比由 ComponentLookupException 提供的基于文本的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |