swing 调试_调试和测试Swing代码

本文介绍了如何使用Swing Explorer和FEST-Swing这两个开源工具来调试和测试Swing GUI应用。Swing Explorer提供了一个可视化界面,帮助开发者理解Swing代码的结构,而FEST-Swing则提供了流畅的API,便于编写功能测试。文章通过具体的例子展示了如何用这两个工具进行测试,包括打开HTML文件、更改文档字体颜色等操作,并讨论了如何处理GUI测试中的挑战,如线程安全和故障排除。
摘要由CSDN通过智能技术生成

Swing是可用的更强大的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测试必须知道:

  • GUI中要测试的组件
  • 如何在测试中唯一标识此类组件
  • 在特定用例中组件的预期状态(或属性)

您可以使用可视化设计工具(例如NetBeans Matisse)来弄清GUI的结构。 但是,这种类型的工具仅显示GUI的设计时信息,该信息可能与您在运行时看到的信息不同。 例如,响应于用户输入,可以使一些组件可见或不可见。

传统的调试器无法帮助您在执行特定用例时了解GUI的状态。 当调试器在放置在Swing代码中的断点处停止时,GUI绘制被中断,从而导致GUI看起来像空白方块。 理想情况下,您希望在使用调试器逐步查看GUI 时看到其行为。

幸运的是,当需要了解现有的Swing代码时,两个开源工具Swing Explorer和FEST-Swing可以帮助您快速上手。 本文向您介绍了这些工具,向您展示了如何结合使用它们来检查应用程序的GUI结构,测试其功能并确定潜在的问题。

探索的应用

对于本文的大多数示例,我将使用一个免费的,功能强大HTML编辑器HTMLDocumentEditor作为要测试的应用程序(请参阅参考资料 )。 如果您想亲自研究这些示例,则可以下载该应用程序和示例测试代码。 图1显示了运行中HTMLDocumentEditor:

图1. HTML编辑器
HTML编辑器应用程序的屏幕截图

在编写GUI测试之前,您需要了解GUI的组成。 HTML编辑器非常简单,由一个文本区域和几个用于打开,保存和编辑HTML文档的菜单组成。

了解每个组件的具体类型也很重要。 这将帮助您了解GUI组件通过其API提供的哪些操作或属性,以供您在测试中使用。 对于HTML编辑器,您需要确定文本区域是JTextAreaJTextPane还是自定义GUI组件。 确定GUI组件类型的一种方法是检查源代码。 根据GUI的实现方式,这可能是一件容易的事或具有挑战性的任务。 HTMLDocumentEditor的源代码易读且易于理解,对其进行快速检查即可发现该文本区域为JTextPane 。 但是在您的职业生涯中的某个时候,您可能会遇到很难理解的书面GUI代码。 发生这种情况时,您可以花费大量时间来解密该代码,也可以找到一种工具来高效地为您执行此操作。

介绍Swing Explorer

Swing Explorer使您可以直观地检查Swing GUI的内部(请参阅参考资料 )。 其简单,直观的UI使得在GUI中发现所有组件,调查它们的绘制方式,在任何时间点检查其属性等变得很容易。

Swing Explorer作为独立应用程序以及Eclipse和NetBeans的插件分发。 推荐的使用方式是通过IDE插件。 在本文中,我将使用Eclipse插件(请参阅参考资料 )。

安装该插件之后,我使用Swing Explorer启动HTML编辑器主类,如图2所示:

图2.在Swing Explorer中启动的编辑器应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值