有哪些选项可用于构建使用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
.不好,不容易,但每次都有效.
优点:
你在掌控之中
非常快
建立自己的FWK
手提
没有外部依赖
缺点:
没有很好的GUI来构建测试
测试时必须单独使用GUI
建立自己的FWK
很难更改测试代码并创建第一个线束
现在,如果你有预算,我会选择LoadRunner.全班最优.
(披露:与拥有LR的公司的关系,但我在关系之前与LR合作)
我没有亲自使用它,但SwingUnit看起来相当不错.您可以将它与jUnit一起使用,它不是基于"组件的位置"(即x和y坐标).
您可能要对NetBeans GUI Builder执行的唯一操作是为组件设置唯一的名称.
我们正在使用QF-Test并且非常满意.