eclipse - 如何测试 Eclipse Juno RCP 的 UI

标签 eclipse testing frameworks eclipse-juno

我们正在开发基于 Eclipse 的 RCP。最近我们已经更新到 Eclipse Juno,目前我们专注于质量,这当然使自动化测试成为焦点,因为应用程序非常大,测试工作会延迟发布。

我们已经在编写 JUnit 测试,但我对 UI 测试更感兴趣。对于较旧的 Eclipse,这将不是问题。周围有很多好的测试框架。不幸的是,对于 Juno,由于增加了通过 Swing 或 JavaFX 切换默认 SWT UI 的能力,一切都发生了变化(至少这是我对导致问题的变化的理解)

所以大多数测试工具都不能正常工作了。从过去的经验看来:

  • SWTBot 最近似乎不太受欢迎,而且非常不稳定(在某些版本中找不到元素)
  • Window Tester 看起来相当不错,但在测试运行期间识别元素时存在很多问题(尤其是内容辅助或工具提示等弹出窗口)
  • 显然 Froglogics Squish 支持 Juno,但由于许可证费用约为 2,500 欧元,我必须通过
  • QF-Test 似乎也是如此(太贵了)。
  • 剩下 Jubula(或 GUIDancer,这是商业 Jubula),我们过去曾尝试过它,但它与 Window Tester 和 SWTBot 有类似的问题(在更改方面不稳定) Eclipse 平台和检测某些元素的困难)

我需要知道应该关注/信任哪个工具。是否有人有使用其中一种工具的经验,或者目前正在测试 Juno RCP(或 Juno 本身)?或者有人知道 Eclipse 如何测试他们自己的平台(如果他们在 atm 上这样做的话)?

搜索与“test”、“Juno”和“UI/GUI”相关的信息只会显示商业产品。

对我来说,重要的是找到一个工具,即使在未来的版本中我也可以使用开发的测试用例,这意味着:一个框架项目,它有社区的一些支持,能够快速适应。此外,找到工具提示、叠加层或内容帮助/建议等内容也很重要——与基本 HTMLUnit 相比,类似于 Selenium。

在这一点上,我什至不太关心集成、报告或是否符合标准..

最佳答案

您可以在 Eclipse Wiki 中找到 GUI 测试工具的综合表: http://wiki.eclipse.org/Automated_Testing#UI_tests

您必须做出的一个重要决定是,如果您想使用鼠标来记录/创建测试(Jubula、QFTest,...),如果您想能够手写测试代码(SWTBot, ...),或者如果您希望能够同时执行这两项操作(WindowTester Pro,...)。

Eclipse Juno 相当新,我预计所有列出的工具都会出现问题,但是迁移应该不会花那么长时间,因为大多数这些工具主要专注于测试 SWT 小部件,而 Juno 仍然使用 SWT。到目前为止,除了技术演示外,我还没有听到任何认真使用 JavaFX 的 RCP 应用程序,但我很想看到它们!

我认为,问题在于测试 Eclipse 很困难,而 GUI 测试尤其困难。 您可能想看看这项研究,它发现并解释了主要问题: http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2011-010.pdf

如果您相信这项研究,JUnit 测试通常比 GUI 测试更可取。好吧,有了 Juno,您将拥有一个巨大的优势,即单元测试 Eclipse 现在比以往任何时候都更容易,因为框架从继承和单例切换到依赖注入(inject),这使得它更容易测试。

关于eclipse - 如何测试 Eclipse Juno RCP 的 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916923/

相关文章:

java - 如何在java中的任何二维数组中存储不同数据类型的多个字段?

javascript - 使 Scrollbar Angular JS 和 Framework 7 移动

java - Eclipse java调试: source not found

java - 每次我使用文本字段在 Jtable 中输入条目时都会出现重复行

java - 为什么不调用 Eclipse 插件处理程序?

go - 在 Go 中以编程方式运行测试

android - 如何更改android项目平台版本

java - clientApplicationContext xml 文件出现问题

python - 使用 pytest 动态参数化类级固定装置

css - Uikit 3.1.6 中的响应式导航栏