Java Swing GUI的自动化测试


72

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

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



我建议尝试ReTest(retest.de/en),它实现了一种有趣的功能回归测试与基于AI的猴子测试相结合的新方法。
roesslerj

Answers:


33

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

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


可以使用它来自动化第三方Java应用程序而无需访问源代码吗?如果是这样,怎么办?
Stevoisiak

@StevenVascellaro看起来不能,反正+1为AssertJ Swing
emecas

您如何识别对象属性。我正在测试的应用程序是Java Swing UI。如何获得要自动执行的目标字段/按钮的属性?
Manmohan_singh

您可以免费使用testmate自动执行Java swing应用程序youtu.be/BQQdJ0V23GM
Jaskaran,

26

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

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


它从这篇文章移到GitHub 。
Davide Pastore13年

5
巨星摇摆不再被开发。它也不支持Java 7。好像巨星的摇摆部分已经死了!

我在Java7中将FEST与Swing一起使用就好了。有关全面的测试方案,请参见github.com/bitcoin-solutions/multibit-hd/tree/develop/…–
Gary Rowe

1
Fest项目网站不见了(fest.easytesting.org)。2015年的文档非常缺乏。还有其他类似的东西可以驱动Swing UI吗?
Greg Smethells

作为不熟悉JUnit的人,如何使用FEST查找和控制Java小程序?
Stevoisiak

14

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

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

 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视频演示以实际操作。


9

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


2
Jemmy是一个非常坚实的框架,并且自5年来我们一直在成功使用它。
蒙特

8

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

优点:

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

缺点:

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

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

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


4
您说“建立自己的FWK”。什么是FWK?
布赖恩·奥克利

2
根据我的经验,我可以说AWTRobot十分脆弱。一个主要问题是其低级API正在使用绝对坐标。即使未更改被测系统(SUT),测试也可能会中断(例如,在其他OS上执行时)。
Beatngu13


6

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

您与NetBeans GUI Builder唯一要做的就是为组件设置唯一的名称。


4

您可以使用Marathon:“ MarathonITE Marathon集成测试环境是一种经济实惠,易于使用且跨平台的Java / Swing™GUI测试自动化框架。您可以使用MarathonITE的内置脚本记录器来创建清晰易读的测试脚本。在Python或Ruby中。提取方法重构,创建数据驱动的测试和对象图编辑等高级功能使您可以创建可维护的,有弹性的测试套件。”



3

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

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




1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.