WEB开发网
开发学院软件开发Java 调试和测试 Swing 代码 阅读

调试和测试 Swing 代码

 2010-03-17 00:00:00 来源:WEB开发网   
核心提示: FEST-Swing 可以简化 GUI 测试甚至是复杂测试的编写和阅读, Swing 线程Swing 是一个单线程 UI 工具包,调试和测试 Swing 代码(9),因为它不是线程安全的,所以所有 Swing 代码必须在 EDT 中执行,如果检测到任何违规,它会强迫测试终止,如官方文档所述,从多

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 代码

查看原图(大图)

FEST-Swing 提供 FailOnThreadViolationRepaintManager 来检查 EDT 违规行为,如果检测到任何违规,它会强迫测试终止。配置很简单:在标有 @BeforeClass 注释的 set-up 方法中放入它,如清单 6 所示:

清单 6. 安装 FailOnThreadViolationRepaintManager

@BeforeClass public void setUpOnce() { 
 FailOnThreadViolationRepaintManager.install(); 
} 

上一页  4 5 6 7 8 9 10  下一页

Tags:调试 Swing

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接