Java Swing GUI的自动化测试

Java Swing GUI的自动化测试

Automated tests for Java Swing GUIs

有哪些选项可以为用Java Swing编写的GUI构建自动化测试?

我想测试一些使用NetBeans Swing GUI生成器编写的GUI,因此理想的方法是不需要对被测代码进行特殊篡改的工作。


最近,我遇到了FEST,它看起来很有希望,只是开发人员在2012年宣布开发不会继续。

AssertJ是FEST的一个分支,对我来说效果很好。它被积极地维护(在撰写本文时),支持Java 8,具有针对一些流行的库(例如Guava和Joda Time)的声明,并且文档齐全。它也是免费和开放的。


我目前正在使用FEST。它可与JUnit一起使用,还将获取失败测试的屏幕截图。

它具有默认的组件搜寻方法,这些方法查找要测试的组件的名称(需要手动设置),但是您也可以通过将给定的组件传递给该组件来生成测试器。


您可以尝试使用Cucumber和Swinger用普通的英语编写针对Swing GUI应用程序的功能接受测试。 Swinger在后台使用Netbeans的Jemmy库来驱动该应用程序。

黄瓜允许您编写如下测试:

1
2
3
4
5
6
7
8
 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视频演示以实际操作。


我们正在考虑自动化一些GUI测试。看起来很有希望。


我使用java.awt.Robot。不好,不容易,但每次都能工作。

优点:

  • 你在掌控中
  • 非常快
  • 建立自己的FWK
  • 随身携带
  • 没有外部依赖

缺点:

  • 没有好的GUI来构建测试
  • 测试时,您必须不理会GUI
  • 建立自己的FWK
  • 难以更改测试代码并创建您的第一个工具

现在,如果您有预算,我将选择LoadRunner。班上最好。

(披露:与拥有LR的公司的关系,但是在建立关系之前我曾与LR合作)


我们正在使用QF-Test,对此感到非常满意。


我没有亲自使用它,但是SwingUnit看起来还不错。您可以将其与jUnit一起使用,它并不基于"组件的位置"(即x和y坐标)。

使用NetBeans GUI Builder可能要做的唯一一件事就是为组件设置唯一的名称。


您可以使用Marathon:
" Marathon集成测试环境MarathonITE是一种价格合理,易于使用且跨平台的Java / Swing GUI测试自动化框架。您可以使用MarathonITE的内置脚本记录器以Python或Windows来创建清晰易读的测试脚本。 Ruby。诸如提取方法重构,创建数据驱动的测试和对象图编辑之类的高级功能使您可以创建可维护的,有弹性的测试套件。"


您可以尝试ReTest,这是一种新颖的工具,可实现功能回归测试的创新方法,并将其与基于AI的猴子测试相结合。它也将成为开源...

免责声明:我是ReTest背后公司的创始人之一。


Sikuli:使用屏幕截图的GUI测试人员
http://sikuli.org/


对于那些有冒险精神的人,可以使用gooey https://github.com/robertoaflores/Gooey(一种非常基础的和开发不足的)用于摆动应用程序的程序测试工具。


您可以使用sikuli或Automa来测试您的GUI部件,这些都是经过充分记录和测试的工具


只是做了一些快速扫描。挤压是最有前途的。虽然不是免费的


推荐阅读