0

我想对一个包含 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 插件问题的想法成分。我对完全不同的方法持开放态度,但是我想坚持使用开源框架。

4

1 回答 1

0

您应该创建 3 个测试项目:

1)一个未绑定的项目,您可以在其中定义一般的测试用例(将其视为一个框架)

2) 一个 RCP 绑定项目,它导入第一个

3) 一个 Swing 绑定项目,它也导入第一个

您在后两者中定义您的测试套件和 AUT。

棘手的部分是如何协调执行;执行作业时需要在 AUT 之间切换。可以通过编写脚本程序调用Jubula的testexec二进制文件来解决;选择适当的项目、测试作业和 AUT。

不过不方便。我相信它可以从用户界面完成,而无需调用 testexec。您需要创建第四个项目来导入 2nd 和 3rd 并在此处定义您的测试作业。(最高级别的执行单元)只有测试作业才能将测试套件绑定到 AUT,所以这对你来说是可行的。

但是我还没有尝试过是否可行。一旦我发现它,我会编辑我的答案。

于 2017-07-14T08:11:36.853 回答