Java Swing GUI的自动化testing

为使用Java Swing编写的GUI构build自动化testing,有哪些select?

我想testing一些使用NetBeans Swing GUI Builder编写的GUI ,因此不需要特别篡改被测代码就可以工作。

最近我遇到了FEST,看起来很有希望,除了开发者在2012年宣布开发不会继续 。

AssertJ是FEST的一个分支,对我来说工作得非常好。 它是积极的维护(写作的时候),支持Java 8,有几个stream行的库,如番石榴和乔达时代的断言,是非常有据可查的。 它也是自由和开放的。

我目前正在使用FEST 。 它可以和JUnit一起工作,也可以截取失败的testing。

它具有默认的组件查找方法,它查找被测组件的名称(需要手动设置),但是也可以通过将组件传递给给定组件来生成testing者。

您可以尝试使用Cucumber和Swinger以纯英文为Swing GUI应用程序编写function验收testing。 Swinger使用引擎盖下的Netbeans Jemmy库来驱动应用程序。

黄瓜允许你写这样的testing:

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!" 

看看这个Swingervideo演示 ,看看它在行动。

我使用java.awt.Robot 。 不好,不容易,但每次都有效。

优点:

  • 你在控制
  • 非常快
  • build立你自己的FWK
  • 手提
  • 没有外部依赖性

缺点:

  • 没有很好的GUI来build立testing
  • testing时,您必须单独离开GUI
  • build立你自己的FWK
  • 很难改变testing代码,并创build你的第一个线束

现在如果你有预算,我会去LoadRunner。 全class最优。

(披露:与拥有LR的公司的关系,但我与LR之前的关系)

我们正在考虑让jemmy自动化一些GUItesting。 看起来很有希望。

我没有亲自使用它,但SwingUnit看起来相当不错。 你可以使用它与jUnit,它不是基于“组件的位置”(即x和y坐标)。

您可能必须使用NetBeans GUI Builder设置唯一的名称为您的组件。

我们正在使用QF-Test ,并且非常满意。

UISpec4J非常简单,没有任何可扩展性。 它比FEST更适合我的目的。

Sikuli:使用屏幕截图的GUItesting器http://sikuli.org/

您可以使用Marathon :“MarathonITE集成testing环境MarathonITE是一个经济实惠,易于使用和跨平台的Java / Swing GUItesting自动化框架,您可以使用MarathonITE内置的脚本logging器来创build干净可读的testing脚本在Python或者Ruby中,像extract-method重构,create-datadriven-tests和objectmap编辑等高级function可以让你创build可维护的,有弹性的testing套件。

你可以试试ReTest ,这是一个新颖的工具,实现了function回归testing的创新方法,并将其与基于猴子的猴子testing相结合。 它也将成为开源的…

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

只是做了一些快速扫描。 这是最有希望的。 虽然不是免费的

您可以使用sikuli或Automa来testing您的GUI部件,这些都是有据可查的和经过testing的工具