Java Swing GUI 的自动化测试 [关闭]
Posted
技术标签:
【中文标题】Java Swing GUI 的自动化测试 [关闭]【英文标题】:Automated tests for Java Swing GUIs [closed] 【发布时间】:2010-09-10 14:37:01 【问题描述】:有哪些选项可以为用 Java Swing 编写的 GUI 构建自动化测试?
我想测试一些使用NetBeans Swing GUI Builder 编写的 GUI,因此不需要对被测代码进行特殊篡改即可工作的东西是理想的。
【问题讨论】:
相关问题:***.com/questions/79891/… 我建议尝试 ReTest (retest.de/en),它实现了一种有趣的新方法来进行功能回归测试和基于 AI 的猴子测试。 【参考方案1】:最近我遇到了看起来很有希望的 FEST,除了开发者announced in 2012 that development would not continue。
AssertJ 是 FEST 的一个分支,对我来说效果很好。它得到积极维护(在撰写本文时),支持 Java 8,对一些流行的库(如 Guava 和 Joda Time)有断言,并且有很好的文档记录。它也是免费开放的。
【讨论】:
这可以用于自动化第三方 Java 应用程序而无需访问源代码吗?如果有,怎么做? @StevenVascellaro 看起来不能,反正 AssertJ Swing +1 您如何识别对象属性。我正在测试的应用程序是一个 Java Swing UI。如何获取要自动化的目标字段/按钮的属性? 您可以免费使用Testmate自动化Java swing应用youtu.be/BQQdJ0V23GM【参考方案2】:我目前正在使用FEST。它适用于 JUnit,并且还会对失败的测试进行截图。
它具有默认的组件搜索方法,用于查找正在测试的组件的名称(需要手动设置),但您也可以通过将组件传递给给定组件来生成测试器。
【讨论】:
它从this post移动到GitHub。 Fest swing 不再开发。它也不支持java 7。似乎巨星的摇摆部分完全死了! 我在 Java7 中使用 FEST 和 Swing 就好了。请参阅github.com/bitcoin-solutions/multibit-hd/tree/develop/… 了解全面的测试场景 Fest 项目网站已消失 (fest.easytesting.org)。 2015 年的文档非常缺乏。还有其他类似的东西可以驱动 Swing UI 吗? 作为一个不熟悉 JUnit 的人,如何找到并控制一个带有 FEST 的 Java 小程序?【参考方案3】:您可以尝试使用Cucumber 和Swinger 为Swing GUI 应用程序用简单的英语编写功能验收测试。 Swinger 在后台使用 Netbeans 的 Jemmy 库来驱动应用程序。
Cucumber 允许你编写这样的测试:
Scenario: Dialog manipulation
Given the frame "SwingSet" is visible
And the frame "SwingSet" is the container
When I click the menu "File/About"
Then I should see the dialog "About Swing!"
Given the dialog "About Swing!" is the container
When I click the button "OK"
Then I should not see the dialog "About Swing!"
看看这个Swinger video demo,看看它的实际效果。
【讨论】:
【参考方案4】:我们正在考虑使用jemmy 自动化一些 GUI 测试。看起来很有希望。
【讨论】:
Jemmy 是一个非常可靠的框架,我们已经成功使用了 5 年多。【参考方案5】:我使用java.awt.Robot
。不好,不容易,但每次都有效。
优点:
一切尽在掌控 非常快 构建您自己的 FWK 便携 没有外部依赖缺点:
没有很好的 GUI 来构建测试 您必须在测试时不理会 GUI 构建您自己的 FWK 很难更改测试代码和创建您的第一个工具现在,如果您有预算,我会选择 LoadRunner。同类最佳。
(披露:与拥有LR的公司的关系,但在关系之前我曾与LR合作)
【讨论】:
您说“构建自己的 FWK”。什么是 FWK? 根据我的经验,我可以说 AWT 的Robot
非常脆弱。一个主要问题是它的低级API 正在使用绝对坐标。即使您的被测系统 (SUT) 没有更改(例如在另一个操作系统上执行时),测试也可能会中断。【参考方案6】:
我们正在使用QF-Test,非常满意。
【讨论】:
【参考方案7】:我个人没用过,不过SwingUnit看起来还不错。您可以将它与 jUnit 一起使用,它不是基于“组件的位置”(即 x 和 y 坐标)。
您可能需要对 NetBeans GUI Builder 做的唯一事情就是为您的组件设置唯一名称。
【讨论】:
【参考方案8】:您可以使用 Marathon : “Marathon 集成测试环境 MarathonITE 是一款经济实惠、易于使用且跨平台的 Java/Swing™ GUI 测试自动化框架。您可以使用 MarathonITE 的内置脚本记录器以 Python 或Ruby。提取方法重构、创建数据驱动测试和对象映射编辑等高级功能允许您创建可维护、有弹性的测试套件。”
【讨论】:
【参考方案9】:Sikuli:使用屏幕截图的 GUI 测试器 http://sikuli.org/
【讨论】:
注意现在是sikulix.com(仍然开源)【参考方案10】:您可以尝试ReTest,这是一种新颖的工具,它实现了功能回归测试的创新方法,并将其与基于人工智能的猴子测试相结合。它也即将成为开源......
免责声明:我是 ReTest 背后公司的创始人之一。
【讨论】:
【参考方案11】:对于那些有冒险精神的人来说,有粘性的 https://github.com/robertoaflores/Gooey 一个(非常基本且开发不足的)用于摇摆应用程序的程序化测试工具。
【讨论】:
【参考方案12】:您可以使用 sikuli 或 Automa 来测试您的 GUI 部分,这些都是有据可查且经过测试的工具
【讨论】:
【参考方案13】:刚刚做了一些快速扫描。 Squish 是最有前途的。虽然不是免费的
【讨论】:
以上是关于Java Swing GUI 的自动化测试 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
自动化__GUI自动化__java__案例__java应用程序计算器__执行测试的代码
用于 Windows 的 Java 中的 GUI 编程? [关闭]