Автоматизированные тесты для Java Swing GUI

Какие есть варианты для создания автоматических тестов для графических интерфейсов, написанных на Java Swing?

Я хотел бы протестировать некоторые графические интерфейсы, которые были написаны с использованием NetBeans Swing GUI Builder, поэтому то, что работает, не требуя специального вмешательства в тестируемый код, будет идеальным.

14 ответов

Решение

Недавно я наткнулся на FEST, который казался многообещающим, за исключением того, что разработчик объявил в 2012 году, что разработка не будет продолжаться.

AssertJ - это форк FEST, который очень хорошо работает для меня. Он активно поддерживается (на момент написания), поддерживает Java 8, имеет утверждения для нескольких популярных библиотек, таких как Guava и Joda Time, и очень хорошо документирован. Это также бесплатно и открыто.

Я в настоящее время использую FEST. Он работает с JUnit, а также делает скриншоты неудачных тестов.

Он имеет методы поиска компонентов по умолчанию, которые ищут имя тестируемого компонента (который должен быть установлен вручную), но вы также можете сгенерировать тестеры для данного компонента, передав ему компонент.

Вы можете попробовать использовать Cucumber и Swinger для написания функциональных приемочных тестов на простом английском языке для приложений Swing GUI. Swinger использует библиотеку Джемми из Netbeans для управления приложением.

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
  • портативный
  • Нет внешних зависимостей

Минусы:

  • Нет хорошего графического интерфейса для сборки теста
  • Вы должны оставить графический интерфейс один, пока вы тестируете
  • Создайте свой собственный FWK
  • Сложно изменить тестовый код и создать свой первый жгут

Теперь, если у вас есть бюджет, я бы пошел на LoadRunner. Лучших в своем классе.

(Раскрытие информации: отношения с компанией, которая владеет LR, но я работал с LR до отношений)

Мы используем QF-Test и вполне довольны.

Я не использовал это лично, но SwingUnit выглядит довольно хорошо. Вы можете использовать его с jUnit, и он не основан на "расположении компонентов" (т.е. координаты x и y).

Единственное, что вам, возможно, придется делать с NetBeans GUI Builder, - это задавать уникальные имена для ваших компонентов.

UISpec4J довольно простой, неблокированный и расширяемый. Это соответствует моим целям лучше, чем FEST.

Вы можете использовать Marathon: "Marathon Integrated Testing Environment, MarathonITE, является доступной, простой в использовании и кросс-платформенной средой автоматизации тестирования Java/Swing™ GUI. Вы можете использовать встроенный рекордер сценариев MarathonITE для создания чистых, читаемых тестовых сценариев, либо в Python или Ruby. Расширенные функции, такие как рефакторинг метода extract, create-datadriven-tests и редактирование карты объектов, позволяют создавать поддерживаемые, гибкие наборы тестов."

Вы можете попробовать ReTest, который является новым инструментом, который реализует инновационный подход к функциональному регрессионному тестированию и сочетает его с тестированием на обезьянах на основе ai. Это также станет открытым исходным кодом...

Отказ от ответственности: я являюсь одним из основателей компании ReTest.

Sikuli: GUI-тестер с использованием скриншотов http://sikuli.org/

Для тех, у кого авантюрный ум, есть gooey https://github.com/robertoaflores/Gooey (очень простой и не находящийся в разработке) инструмент для тестирования программного обеспечения для свинг-приложений.

Просто сделал несколько быстрых сканирований. сквош был самым многообещающим. Не бесплатно, хотя

Вы можете использовать sikuli или Automa для тестирования вашей графической части, это хорошо документированные и протестированные инструменты

Другие вопросы по тегам