Как я могу тестировать GUI? - PullRequest
144 голосов
/ 18 октября 2008

Вычисления в моем коде хорошо проверены, но поскольку кода GUI так много, общее покрытие кода ниже, чем хотелось бы. Есть ли какие-либо рекомендации по модульному тестированию кода GUI? Это вообще имеет смысл?

Например, в моем приложении есть графики. Я не смог понять, как автоматизировать тестирование графиков. Для проверки правильности графика требуется человеческий глаз AFAIK.

(я использую Java Swing)

Ответы [ 13 ]

0 голосов
/ 29 марта 2019

Тестировать библиотеку графического интерфейса не ваша задача. Таким образом, вы можете избежать ответственности за проверку того, что на самом деле нарисовано на экране, и вместо этого проверить свойства виджетов, доверяя библиотеке, что они точно представляют то, что нарисовано.

0 голосов
/ 19 октября 2008

Если вы используете Swing, FEST-Swing полезен для управления вашим графическим интерфейсом и проверки утверждений. Это довольно просто для проверки таких вещей, как ", если я нажимаю кнопку A, диалоговое окно B должно отображаться" или ", если я выбираю вариант 2 из выпадающего списка, все флажки должны быть сняты «.

Сценарий графика, который вы упоминаете, не так легко проверить. Довольно просто получить покрытие кода для компонентов GUI, просто создав и отобразив их (и, возможно, управляя ими с помощью FEST). Тем не менее, создание значимых утверждений является сложной частью (и охват кода без значимых утверждений является упражнением в самообмане). Как вы проверяете, что график был нарисован не в обратном порядке или слишком маленьким?

Я думаю, что вы просто должны признать, что некоторые аспекты графического интерфейса не могут быть эффективно протестированы с помощью автоматических модульных тестов, и что вам придется тестировать их другими способами.

0 голосов
/ 19 октября 2008

Насколько я знаю, это довольно сложно и действительно зависит от языка - многие языки имеют свой собственный способ тестирования GUI, но если вам действительно нужно тестировать GUI (в отличие от взаимодействия модель / GUI), вы часто приходится имитировать фактическое нажатие кнопок пользователем. Например, инфраструктура SWT, используемая в Eclipse, обеспечивает SWTBot , JFCUnit , как уже упоминалось, Mozilla имеет свой собственный способ симуляции этого в XUL (и из того, что я читал на их В блогах эти тесты кажутся довольно хрупкими). ​​

Иногда вам нужно сделать снимок экрана и проверить его на идеальное рендеринг (я думаю, что Mozilla делает это для проверки корректно отображаемых страниц) - это требует более длительной настройки, но может быть тем, что вам нужно для графиков. Таким образом, когда вы обновляете свой код и выполняете тесты, вам нужно вручную проверить изображение, если сбой был реальным, или вы улучшили код рендеринга графиков, чтобы генерировать более симпатичные графики и обновлять снимки экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...