调试和测试Swing代码 - 编程入门网
调试和测试Swing代码时间:2011-06-11 IBM Alex RuizSwing 是一个强大的 GUI 工具包;它可扩展、可配置且跨平台。不过 Swing 的灵活性既是它的主要优势也是它的重大弱点。Swing 可以不同的方式构建同一 UI。例如,您可以使用插页、空白边框或填充符在 GUI 组件之间置入间隔。鉴 于 Swing 选项太多,了解现有 GUI 如同编写新 GUI 一样令人畏惧,且将其视 觉外观与底层代码对应起来也并非易事。(试着在阅读几个使用 GridBagLayout 的代码行时想象一下 GUI。) 不管您是在维护未曾写过的 Swing GUI 还是集成第三方 GUI 组件到您的应 用程序中,理解代码的一种合理方法是编写测试。在编写测试的同时您也就熟悉 了未知代码的内部构造。这样做会同时产生另一个有价值的结果,即您最终会有 一个测试套件,它有助于在维护代码时预防回归的引入。对于第三方 GUI 组件 ,测试套件有助于查明新版本的库是否引入了任何行为变化。 一开始最好先编写功能测试,以了解 GUI 如何响应用户输入。为 GUI 编写 测试比为非可视化代码编写测试更复杂,因为: 理论上,测试必须是自动化的,但是 GUI 则是供人类 — 而非计算机程序 — 使用的。 传统的单元测试涉及到隔离类的测试,不适合 GUI 组件。在 GUI 术语中, 一个 “单元” 涉及多个 GUI 组件的协作,因此它本身包含不止一个类。 GUI 响应用户生成的事件。要测试 GUI,你需要一种可以模拟用户输入的方 法,一直等到生成的事件散播给所有侦听者,然后检查结果,就像 GUI 响应用 户一样。编写模拟用户与 GUI 交互的代码会很繁琐且易出错。 更改 GUI 的布局不应影响强健的功能测试。 另外一个问题就是您必须事先熟知要测试的 GUI 的结构和行为,否则您不知 道自动化测试应使用哪些组件,且哪些内容需要验证。总而言之,要编写 GUI 测试,您必须知道: GUI 中用于测试的组件 如何在测试中惟一标识这样的组件 特定用例中组件的预期状态(或属性) 使用可视化设计工具(比如 NetBeans Matisse)您可以弄清 GUI 的结构。 不过这种工具仅显示 GUI 的设计时信息,这会与您在运行时看到的不一样。例 如,有些组件可能会根据用户输入而显示为可见或不可见。 传统的调试程序在执行特定用例时不能帮助您了解 GUI 的状态。当调试程序 停在 Swing 代码中置入的断点时,GUI 绘图中断,使得 GUI 看起来像一个空白 方框。理想情况下,当 您使用调试程序进行单步调试时您希望看到 GUI 运作的 方式。 幸运的是,两个开源工具 — Swing Explorer 和 FEST-Swing — 可以帮助 您快速了解现有 Swing 代码。本文向您介绍这些工具,向您展示如何结合使用 它们检查应用程序的 GUI 结构,测试其功能,并识别潜在问题。 要探究的应用程序 对于文章的大部分示例,我将使用一种名为 HTMLDocumentEditor 的免费功 能性 HTML 编辑器,将其作为要测试的应用程序。如果您想自己完成示例,可以 下载 应用程序和样例测试代码。图 1 显示了运行中的 HTMLDocumentEditor: 图 1. HTML 编辑器 调试和测试Swing代码(2)时间:2011-06-11 IBM Alex Ruiz在编写 GUI 测试之前,您需要了解 GUI 的构成方式。HTML 编辑器很简单, 包含一个文本区域和若干用于打开、保存和编辑 HTML 文档的菜单。 熟悉每个组件的具体类型也是很重要的。这将有助于您了解 GUI 组件通过 API 为您提供哪些动作或属性用于测试。对于 HTML 编辑器,您需要确定文本区 域是否是 JTextArea、JTextPane 或一个通用的 GUI 组件。确定 GUI 组件类型 的一种方法是检查源码。根据 GUI 的实现方式,这可以是个简单工作,也可以 是挑战性任务。HTMLDocumentEditor 的源码可读且易于掌握,快速检查该源码 后发现文本 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |