调试和测试Swing代码 - 编程入门网
证是否将文件加载到了编辑器中。
注意,清单 3 按照名称(editor)查询 JTextPane。这是在一个测试中查找 组件最可靠的方式;它保证组件查找从不失败,即使 GUI 的布局在将来会改变 。 用例:改变文档字体的颜色 要验证 HTML 编辑器将文档字体的颜色改为黄色,您需要: 选择 Color > Yellow 子菜单 在编辑器中输入内容 验证输入文本的颜色是黄色 清单 4 显示了如何使用 FEST-Swing 实现上述操作: 清单 4. 用于更改文档字体颜色的测试
到目前为止,我展示了如何测试简单的 GUI 组件,比如菜单和文本框。接下 来我将介绍一种不太直观的测试模式。 调试和测试Swing代码(6)时间:2011-06-11 IBM Alex Ruiz更加复杂的测试 为展示 FEST-Swing 直观紧凑的 API,我将使用 Swing 的一个高度复杂的组 件 — JTable。 我将使用 Sun 公司 Swing 教程中的 TableDialogEditoDemo 应用程序。该 应用程序使用带有定制编辑器的 JTable:JComboBoxes 和 JCheckBoxes,如图 4 所示: 图 4. TableDialogEditDemo 为用作示例,我将编写一个测试,模拟用户选择 0 行处组合框中的第二个元 素。测试要执行的动作是: 按需上下滚动表格使该行可见。 单击第 0 行第 2 列的单元格。 等待组合框出现。 找到并单击组合框。 从组合框中选择第二个元素。 这只是对我要编码的动作的粗略描述。编写真实代码并非微不足道的工作。 幸运的是,FEST-Swing 的 API 简化了该任务,如清单 5 所示: 清单 5. 选择 0 行处组合框中的第三个元素 dialog.table.enterValue(row(0).column(2), "Knitting"); FEST-Swing 可以简化 GUI 测试甚至是复杂测试的编写和阅读。 Swing 线程 Swing 是一个单线程 UI 工具包。因为它不是线程安全的,所以所有 Swing 代码必须在 EDT 中执行。如官方文档所述,从多线程中调用 Swing 代码会造成 线程冲突或内存一致性错误。 Swing 的线程策略状态: Swing 组件必须在 EDT 中创建。 Swing 组件必须在 EDT 中进行访问,除非您调用文档化为线程安全的方法。 虽然这看起来很简单,不过很容易破坏规则。Swing 不为正确的 EDT 使用提 供任何运行时检查,而且大部分时候表面上 “行为良好” 的 Swing UI 实际上 却破坏了这些规则。 Swing Explorer 和 FEST-Swing 都支持查找 Swing 线程策略的违规行为。 图 5 显示了 Swing Explorer 的 EDT 监视器。EDT 监视器可以在执行应用程序 时报告 EDT 访问违规行为。 图 5. Swing Explorer 的 EDT 监视器 调试和测试Swing代码(7)时间:2011-06-11 IBM Alex RuizFEST-Swing 提供 FailOnThreadViolationRepaintManager 来检查 EDT 违规 行为,如果检测到任何违规,它会强迫测试终止。配置很简单:在标有 @BeforeClass 注释的 set-up 方法中放入它,如清单 6 所示: 清单 6. 安装 FailOnThreadViolationRepaintManager
另外, UI 测试可将 FEST-Swing 的 FestSwingTestngTestCase 或 FestSwingJunitTestCase 分为子类,这两个类均已安装了 FailOnThreadViolationRepaintManager。FEST-Swing 也提供有用的抽象类来确 保对 Swing 组件的访问是在 EDT 中完成的。 GUI 测试失败故 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |