我想对一个包含 20 多个 Eclipse RCP 插件的大型应用程序进行功能测试自动化。最具挑战性的部分是几乎所有的 RCP 插件都嵌入了一些遗留的 Swing 组件。现在我几乎可以肯定,没有开源测试自动化框架支持开箱即用地测试 SWT+Swing 应用程序。有些框架支持测试纯 SWT 应用程序或纯 Swing 应用程序,但没有框架支持测试混合了 SWT 和 Swing 的 AUT。我用一个示例 SWT+Swing 应用程序进行了一些实验。此示例应用程序不是 RCP 插件,而是带有嵌入式 Swing 控件的独立 SWT 应用程序。我使用两个不同的库来测试 SWT 和应用程序的 Swing 部分。
对于 SWT,我使用了: https ://github.com/mmarquee/ui-automation
对于 Swing,我使用 了 http://joel-costigliola.github.io/assertj/assertj-swing.html
它工作得很好。我有一个自动化 SWT 和 Swing 组件的 Junit 测试。所以我很高兴能采用这种方法来测试 RCP 插件。
所以来到我的问题:对于 SWT 部分,我很好,因为 UI 自动化绑定与 RCP 插件的 SWT 部分配合得很好。问题在于使用 AssertJ Swing。AssertJ Swing 使用一种非常不同的方法来附加到 AUT。事实上,它并没有附加到 AUT 的单独实例,而是将实际的 Swing 组件包装到称为 Fixtures 的东西中。因此,使用 AssertJ Swing 测试 Swing 组件的代码必须在与 AUT 相同的 JVM 中运行。一个想法是实现一个新的 RCP 插件并在这个 RCP 插件中包含 Swing 测试。我可能需要一些时间来学习编写 RCP 应用程序。所以我想问一下这个解决方案是否有任何潜在的问题。我已经看到的一个问题是,AssertJ Swing 是否允许在不调用 ApplicationLauncher.application 的情况下查找框架和对话框。
请注意,虽然这个问题听起来像是关于 AssertJ Swing,如果我能得到关于 AssertJ Swing 的答案和解决方案,我很好,我想听听更多关于解决一起测试多个嵌入 Swing 的 RCP 插件问题的想法成分。我对完全不同的方法持开放态度,但是我想坚持使用开源框架。