Java Swing GUI的自动化测试

pau*_*doo 69 java testing swing automated-tests

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

我想测试一些使用NetBeans Swing GUI Builder编写的GUI,因此可以在不需要对被测代码进行特殊篡改的情况下工作.

小智 32

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

AssertJ是FEST的一个分支,对我来说效果很好.它是积极维护的(在编写本文时),支持Java 8,对Guava和Joda Time等一些流行的库有断言,并且有很好的文档记录.它也是免费和开放的.


det*_*erb 26

我目前正在使用FEST.它适用于JUnit,还将获取失败测试的屏幕截图.

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

  • 巨星摇摆不再被开发.它也不支持java 7.似乎fest的摇摆部分完全死了! (5认同)

Dem*_*ema 14

您可以尝试使用CucumberSwinger以简单的英语为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!"
Run Code Online (Sandbox Code Playgroud)

看看这个Swinger视频演示,看看它的实际运行情况.


Jay*_*yan 9

我们正在考虑使用 jemmy来自动化一些GUI测试.看起来很有希

  • Jemmy是一个非常可靠的框架,我们使用它已经超过5年非常成功. (2认同)

小智 8

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

优点:

  • 你在掌控之中
  • 非常快
  • 建立自己的FWK
  • 手提
  • 没有外部依赖

缺点:

  • 没有很好的GUI来构建测试
  • 测试时必须单独使用GUI
  • 建立自己的FWK
  • 很难更改测试代码并创建第一个线束

现在,如果你有预算,我会选择LoadRunner.全班最优.

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

  • 你说"建立你自己的FWK".什么是FWK? (4认同)
  • 框架,我猜. (3认同)
  • 根据我的经验,我可以说 AWT 的“Robot”非常脆弱。一个主要问题是其低级 [API](https://docs.oracle.com/javase/8/docs/api/java/awt/Robot.html) 使用绝对坐标。即使您的被测系统 (SUT) 没有改变(例如在另一个操作系统上执行时),测试也可能会中断。 (3认同)

小智 6

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

您可能要对NetBeans GUI Builder执行的唯一操作是为组件设置唯一的名称.


ahu*_*ahu 6

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