为用 Java Swing 编写的 GUI 构建自动化测试有哪些选择?
我想测试一些使用NetBeans Swing GUI Builder编写的 GUI ,因此不需要对被测代码进行特殊篡改的工作将是理想的。
为用 Java Swing 编写的 GUI 构建自动化测试有哪些选择?
我想测试一些使用NetBeans Swing GUI Builder编写的 GUI ,因此不需要对被测代码进行特殊篡改的工作将是理想的。
最近我遇到了看起来很有希望的 FEST,只是开发商在 2012 年宣布不会继续开发。
AssertJ是 FEST 的一个分支,对我来说效果很好。它得到积极维护(在撰写本文时),支持 Java 8,对一些流行的库(如 Guava 和 Joda Time)有断言,并且有很好的文档记录。它也是免费和开放的。
我目前正在使用FEST。它可以与 JUnit 一起使用,并且还会截取失败测试的屏幕截图。
它具有默认的组件搜索方法,用于查找正在测试的组件的名称(需要手动设置),但您也可以通过将组件传递给给定组件来生成给定组件的测试器。
您可以尝试使用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 视频演示,看看它的实际效果。
我们正在考虑 使用 jemmy来自动化一些 GUI 测试。看起来很有希望。
我用java.awt.Robot
. 不好,不容易,但每次都有效。
优点:
缺点:
现在,如果您有预算,我会选择 LoadRunner。班上最好。
(披露:与拥有LR的公司的关系,但在关系之前我曾与LR合作)
我们正在使用QF-Test并且非常满意。
我没有亲自使用过,但是SwingUnit看起来还不错。您可以将它与 jUnit 一起使用,它不是基于“组件的位置”(即 x 和 y 坐标)。
您可能需要对 NetBeans GUI Builder 做的唯一事情就是为您的组件设置唯一的名称。
您可以使用Marathon:“Marathon 集成测试环境 MarathonITE 是一种经济实惠、易于使用且跨平台的 Java/Swing™ GUI 测试自动化框架。您可以使用 MarathonITE 的内置脚本记录器来创建干净、可读的测试脚本在 Python 或 Ruby 中。提取方法重构、创建数据驱动测试和对象映射编辑等高级功能允许您创建可维护的、有弹性的测试套件。
Sikuli:使用屏幕截图的 GUI 测试器 http://sikuli.org/
您可以尝试ReTest,这是一种新颖的工具,它实现了功能回归测试的创新方法,并将其与基于 AI 的猴子测试相结合。它也即将成为开源......
免责声明:我是 ReTest 背后公司的创始人之一。
对于那些有冒险精神的人,有 gooey https://github.com/robertoaflores/Gooey一个(非常基本且开发不足的)用于摇摆应用程序的程序化测试工具。
只是做了一些快速扫描。Squish是最有前途的。虽然不是免费的